SSH 配置的正确打开方式
Host 别名、ProxyJump、连接复用、救命键 ~.——每天都要敲的命令,值得十分钟配置到位。
每天都要敲的命令,值得花十分钟配置到位。SSH 的 ~/.ssh/config 是那种「学五分钟、省一年」的东西——下面这些用法,全是我自己在用的,不含任何服务器细节,套用即可。
Host 别名:把 ssh root@1.2.3.4 -p 2222 变成 ssh web
Host web
HostName 203.0.113.10
User root
Port 2222
别小看这一步。别名之后,scp、rsync、sftp 全部跟着受益——它们都认 config 里的 Host。当你有一堆机器时,ssh <TAB> 直接补全,比翻笔记快十倍。
ProxyJump:跳板机一行搞定
要经过跳板才能到的内网机器,以前要 ssh -J 手敲,现在写进配置:
Host jump
HostName jump.example.com
User root
Host internal
HostName 10.0.0.5
User root
ProxyJump jump
ssh internal 会自动先连跳板再转发。比老式的 ProxyCommand nc … 干净得多,也不需要 netcat。
连接复用:二次连接瞬间完成
Host *
ControlMaster auto
ControlPath ~/.ssh/cm-%r@%h:%p
ControlPersist 10m
第一条连接建立后,十分钟内的后续连接直接复用现有通道——认证过程全部跳过,几乎是「瞬间连上」。频繁 scp 小文件、开多个终端挂同一台机器时,体感提升巨大。
保活与抗断线
Host *
ServerAliveInterval 30
ServerAliveCountMax 3
每 30 秒发一次心跳,连续三次无响应才断。对付家用路由/NAT 的空闲回收特别有效,长任务挂着过夜不再「回来看已经断了」。
救命键:~.
会话卡死(网络切换、机器假死)时,不用另开终端杀进程——在新的一行直接输入 波浪号加句号:~.,SSH 会立刻断开当前会话。这是 SSH 客户端的转义序列,还有 ~? 可以查看全部支持的控制符。
端口转发的两个常用姿势
- 本地转发:
ssh -L 8080:localhost:80 web——访问本机 8080 就是访问远端机器上的 80 端口。看内网管理页、调试远端服务的标配。 - 远程转发:
ssh -R 9000:localhost:3000 jump——把本机开发中的 3000 端口暴露到跳板机的 9000,给同事临时看个 demo 非常方便。
配置也能分文件
工作和个人机器混在一个 config 里会越来越乱,用 Include 拆开:
Include ~/.ssh/config.d/work
Include ~/.ssh/config.d/personal
配合 git 管理这个目录(私钥永远不要进 git),换新机器时十分钟恢复全部连接习惯。
工具的顺手程度是会复利的。ssh 每天省下的三十秒,一年是一整天的注意力。