一、最基础:先把服务器连上
ssh user@hostssh user@host -p 2222user@host:用户名 + 主机(IP 或域名)
-p :指定端口(只要不是 22,必用)
这一步没啥技术含量,但80% 的排障,都是从这里失败开始的。
二、身份认证相关:你每天都在用,但未必用对
1️⃣ -i:指定私钥(使用频率 TOP 1)
ssh -i ~/.ssh/id_rsa user@host典型场景
多云厂商(阿里云 / AWS / GCP)
多账号环境(prod / staging / test)
CI/CD 自动化
如果你还在靠记忆「这台机器用哪把钥匙」,那你真的该看看 ~/.ssh/config 了(后面会讲)。
2️⃣ -l:显式指定用户名
ssh -l root host等价于:
ssh root@host用得不多,但在脚本和模板里偶尔很清爽。
3️⃣ -o PreferredAuthentications
ssh -o PreferredAuthentications=publickey user@host作用:
禁用密码登录
排查「为什么 SSH 老是要我输密码」
很多“玄学 SSH 问题”,其实只是认证顺序不对。
三、调试排错:SSH 连不上?先别慌
-v / -vv / -vvv:真正的救命参数
ssh -vvv user@host等级说明:
-v:基础连接信息
-vv:认证流程细节
-vvv:
经验法则:
SSH 连不上,不加 -vvv 看日志,等于在黑屋子里修车。
四、端口转发:SSH 的隐藏王炸能力
很多人不知道,SSH 本质上是一个安全隧道工具。
1️⃣ -L:本地端口转发(最常见)
ssh -L 8080:127.0.0.1:80 user@host含义是:
本地 8080 → SSH 隧道 → 远端 127.0.0.1:80
真实使用场景
本地访问远端数据库
调试内网 Web 服务

绕过防火墙做临时运维
2️⃣ -R:远程端口转发(反向隧道)
ssh -R 9000:localhost:3000 user@host含义:
远端 host:9000
实际访问的是你本地的 3000 端口
典型用途
内网机器暴露服务
早期 / 轻量版“内网穿透”方案
3️⃣ -D:SOCKS 代理(很多人低估了它)
ssh -D 1080 user@host本地开启一个 SOCKS5 代理
浏览器 / curl / git 都能走
一句话总结:
SSH = VPN Lite(而且极其稳定)
五、连接行为控制:自动化与稳定性的关键
-N:不执行远程命令
ssh -N -L 3306:127.0.0.1:3306 user@host只做端口转发
不打开 shell
非常适合:
长时间隧道
后台运行
-T / -t:是否分配 TTY
ssh -T user@host 禁用伪终端ssh -t user@host # 强制分配伪终端记住一个点就够了:
sudo / 交互命令 → 用 -t
CI / 脚本 → 用 -T
-q:安静模式
ssh -q user@host不输出 banner
非常适合脚本
⏱ -o ConnectTimeout
ssh -o ConnectTimeout=5 user@host防止:网络抖动、自动化流程被 SSH 卡死
六、性能与稳定性:线上环境真有用
⚡ -C:启用压缩
ssh -C user@host低带宽、高延迟网络 → 有收益
高带宽、CPU 忙 → 未必划算
❤️ 保活参数(防止莫名断连)
ssh \ -o ServerAliveInterval=30 \ -o ServerAliveCountMax=3 \ user@host含义:
每 30 秒发一次心跳
连续 3 次失败才断开
七、执行远程命令:脚本与自动化必备
ssh user@host "uptime"多命令示例:
ssh user@host << 'EOF'cd /opt/appgit pullsystemctl restart appEOF很多“运维系统”,底层其实就是 SSH + Shell。
八、安全相关参数:知道就已经超过 80% 的人
StrictHostKeyChecking
ssh -o StrictHostKeyChecking=no user@host用途:CI/CD、首次连接不交互、⚠️生产环境慎用
UserKnownHostsFile
ssh -o UserKnownHostsFile=/dev/null user@host不写 known_hosts、容器 / 临时环境非常常见
九、真正的终极形态:~/.ssh/config
很多参数,根本不该写在命令行里。
示例:
Host prod HostName 10.0.0.12 User deploy Port 2222 IdentityFile ~/.ssh/prod_rsa ServerAliveInterval 30此后你只需要:
ssh prod这是从「会用 SSH」到「用好 SSH」的分水岭。
十、一个实战万能模板
ssh -i ~/.ssh/id_rsa \ -p 2222 \ -C \ -o ServerAliveInterval=30 \ -o ServerAliveCountMax=3 \ -vv \ user@host写在最后
SSH 表面上只是一个登录工具,但往深了看,它是:安全通信协议、隧道工具、自动化基石、很多内网方案的底座。如果你真正吃透了 SSH,你会发现:
很多“复杂系统”,其实都能退化成 SSH 问题。