031 ssh命令
命令说明
ssh(Secure Shell)用于加密登录远程主机并执行命令,是 Linux 远程管理的事实标准。支持密码与密钥认证、端口转发、跳板连接等。
语法
ssh [选项]... [用户@]主机 [命令]
常用参数
| 参数 | 说明 |
|---|---|
| -p 端口 | 指定远程 SSH 端口(默认 22) |
| -i 密钥 | 指定私钥文件,如 -i ~/.ssh/id_rsa |
| -l 用户 | 指定登录用户名 |
| -o 选项 | 传递配置项,如 -o StrictHostKeyChecking=no |
| -C | 启用压缩传输 |
| -v | 详细模式,调试连接问题 |
| -L | 本地端口转发:-L 本地端口:目标:目标端口 |
| -R | 远程端口转发 |
| -D | 动态(SOCKS)代理转发 |
| -N | 只建立连接不执行命令,常用于端口转发 |
| -J | 通过跳板机(ProxyJump)连接目标 |
使用示例
$ ssh user@192.168.1.10
以 user 登录远程主机
$ ssh -p 2222 user@host
指定非标准端口登录
$ ssh user@host "df -h"
在远程执行命令后退出
$ ssh -i ~/.ssh/id_ed25519 user@host
用指定私钥登录
$ ssh -L 8080:localhost:80 user@host
本地 8080 转发到远程 80
$ ssh -J user@jump user@target
经跳板机连接目标
$ ssh -N -f -L 3306:db:3306 user@host
后台运行端口转发
实用技巧
- 免密登录:ssh-keygen 生成密钥后,ssh-copy-id user@host 把公钥写入远端 authorized_keys。
- 配置文件 ~/.ssh/config 可为每台主机设 HostName/User/Port/IdentityFile,之后直接 ssh 别名 即可。
- 首次连接会校验主机指纹;known_hosts 冲突报 WARNING 时,确认安全后用 ssh-keygen -R 主机 清除旧记录。
- 排错用 ssh -vvv 查看握手细节;连不上先检查端口、防火墙、sshd 服务状态。
- 生产环境建议禁用密码登录(PasswordAuthentication no),改用密钥。