SSH config 文件实战:一个文件告别重复输入,别名、密钥、跳板一键连
先说结论:如果你每天登录服务器还在敲 ssh…
先说结论:如果你每天登录服务器还在敲 ssh -p 2222 -i ~/.ssh/xxx.pem ubuntu@203.0.113.10 这种一长串,那你该把 ~/.ssh/config 用起来了。它能把这串命令压缩成一个 ssh myvps,还能顺手解决密钥管理和跳板机这两件烦心事。今天这篇是短技巧,直接上干货。
~/.ssh/config 是 SSH 客户端的配置文件,默认放在用户主目录下。它纯本地生效,不需要服务端配合,改完立刻能用,也不影响其他人。核心就一个词:别名。
场景一:给服务器起个名字
假设你有一台 VPS,IP 是 203.0.113.10,SSH 端口 2222,用户 ubuntu,登录密钥是 id_ed25519。先建文件并设置权限:
touch ~/.ssh/config
chmod 600 ~/.ssh/config
然后在里面写上:
Host myvps
HostName 203.0.113.10
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_ed25519
保存后,以后登录只需要敲 ssh myvps。这里 Host 后面的 myvps 是别名,HostName 才是真实地址,User、Port、IdentityFile 各就各位。scp、rsync 同样认这个别名,比如 scp myvps:/etc/nginx/nginx.conf ./ 也能直接用。
场景二:多台服务器 + 通配符保活
服务器多了就写多段 Host,互不干扰,每台配自己的密钥。再配合通配符,给所有连接统一加参数:
Host *
ServerAliveInterval 30
ServerAliveCountMax 3
AddKeysToAgent yes
Host * 这段对所有主机生效:每 30 秒发一个保活包,3 次没响应才断开。这个组合能有效防止 SSH 长时间不操作被中间防火墙或路由器踢下线,比在终端里反复按回车实在多了。AddKeysToAgent yes 则让密钥自动加载进 ssh-agent,输一次口令后面全程免密。
场景三:跳板机一行打通
家里有台内网机器,只能通过公网那台 VPS 中转。传统做法是先登录 VPS 再二次 ssh,两步操作还容易把私钥落到跳板机上。用 ProxyJump 一行搞定:
Host jump
HostName 1.2.3.4
User root
Host db
HostName 10.0.0.5
User root
ProxyJump jump
这样 ssh db 会自动先连 jump,再跳转到内网 10.0.0.5,全程加密,密钥本地转发,私钥始终留在你自己电脑上。
最后两点提醒
一是 ~/.ssh/config 权限必须设成 600,权限过宽时严格模式会直接拒绝读取;二是别名只是 SSH 里的一个标签,ping myvps 是不通的,别把它当域名用。
写清楚之后,这个文件就是你所有服务器的通讯录。以后换电脑、重装系统,把它备份下来,新机器一放进去,所有连接立刻复活。工具虽小,但每天省下几十秒重复敲命令的时间,一年下来就是好几个小时,值。
