ssh 命令参数(客户端),也就是你在终端执行 ssh user@host 时能用的各种选项。
ssh 命令常用参数整理
1. 基本连接
| 参数 |
说明 |
示例 |
ssh user@host |
连接远程主机 |
ssh root@192.168.1.10 |
-p <port> |
指定端口 |
ssh -p 2222 user@host |
-i <identity_file> |
指定私钥文件 |
ssh -i ~/.ssh/id_rsa user@host |
-v |
显示详细调试信息 |
ssh -v user@host |
-vvv |
显示更详细的调试日志(排错时用) |
ssh -vvv user@host |
2. 认证与安全
| 参数 |
说明 |
示例 |
-o StrictHostKeyChecking=no |
跳过 host key 检查(临时测试时用) |
ssh -o StrictHostKeyChecking=no user@host |
-o UserKnownHostsFile=/dev/null |
不记录已知主机文件 |
常与上面一起用 |
-o PreferredAuthentications=publickey,password |
指定认证方式顺序 |
|
3. 端口转发(隧道)
| 参数 |
说明 |
示例 |
-L [本地地址:]本地端口:目标地址:目标端口 |
本地转发 |
ssh -L 8080:127.0.0.1:80 user@host |
-R [远程地址:]远程端口:目标地址:目标端口 |
远程转发 |
ssh -R 9090:127.0.0.1:22 user@host |
-D [本地地址:]本地端口 |
动态转发 (SOCKS 代理) |
ssh -D 1080 user@host |
4. 连接与保持
| 参数 |
说明 |
示例 |
-C |
启用压缩 |
ssh -C user@host |
-N |
不执行远程命令,只做转发 |
ssh -N -L 8080:127.0.0.1:80 user@host |
-f |
后台执行(常配合 -N) |
ssh -f -N -L 8080:127.0.0.1:80 user@host |
-T |
禁止分配 TTY |
ssh -T git@github.com |
-t |
强制分配伪终端 |
ssh -t user@host "htop" |
-o ServerAliveInterval=60 |
保持心跳包间隔 |
推荐防掉线 |
-o ServerAliveCountMax=3 |
最大未响应次数 |
常和上面一起用 |
5. 多跳与代理
| 参数 |
说明 |
示例 |
-J [user@]host[:port] |
跳板机(ProxyJump) |
ssh -J userA@jump userB@target |
-o ProxyCommand="..." |
自定义代理命令 |
ssh -o ProxyCommand="nc -X 5 -x proxy:1080 %h %p" user@host |
6. 其他实用参数
| 参数 |
说明 |
示例 |
-4 / -6 |
强制使用 IPv4 / IPv6 |
ssh -4 user@host |
-q |
静默模式(减少输出) |
ssh -q user@host |
-X |
开启 X11 转发 |
ssh -X user@host |
-Y |
开启可信的 X11 转发 |
ssh -Y user@host |
7. 常见组合示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ssh -i ~/.ssh/id_rsa user@192.168.1.10
ssh -L 63333:db.example.com:5432 user@ssh.example.com
ssh -D 1080 -f -N user@host
ssh -J userA@jumphost userB@targethost
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 user@host
|
8.SSH 端口转发原理图
Local (-L)、Remote (-R)、Dynamic (-D) 的流向原理

图解说明
Local Forwarding (ssh -L)
- 本地端口 → SSH 隧道 → 远程服务
- 应用场景:本地访问远程数据库、Web 服务等。
Remote Forwarding (ssh -R)
- 远程端口 → SSH 隧道 → 本地服务
- 应用场景:在跳板机上开放端口,让外部访问你本地服务。
Dynamic Forwarding (ssh -D)
- 本地 SOCKS 代理端口 → SSH 隧道 → 远程任意服务
- 应用场景:类似 VPN,浏览器/程序通过 SOCKS 代理访问外部网络。