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 每天省下的三十秒,一年是一整天的注意力。

← 回到首页