SSH config 文件:给多台服务器起别名、配代理与跳板
管理多台服务器时,如果每次都要敲一长串 ssh root@203.0.113.10 -p 22022,不仅容易敲错,私钥、端口、跳板机这些参数也很难记。SSH 自带的 config 文件就是解决这个问题的:把连接参数写进 ~/.ssh/config,之后只需要 ssh dev 一条命令。
一、基本用法
在 ~/.ssh/config 里写:Host dev,HostName 203.0.113.10,Port 22022,User deploy,IdentityFile ~/.ssh/id_ed25519。保存后,ssh dev 就等价于原来那一长串命令。Host 后面是别名,可以起任意名字;缩进的几行是真正生效的参数。
二、通配符与默认值
config 支持 pattern 匹配,可以给一类主机统一设置默认值,比如 Host prod-* 段里统一写 User ops 和 ServerAliveInterval 30。注意匹配是从上到下,第一条命中的参数先生效,所以要把精确的 Host 放在前面,通配的规则放在后面,否则精确配置会被通配规则抢先。
三、跳板机:ProxyJump 一行搞定
内网机器不能直连时,以前要么用 ProxyCommand 写转发命令,要么先登跳板机再手动连内网。OpenSSH 7.3 之后有更简单的写法:在 internal 的配置里加一行 ProxyJump bastion,其中 bastion 也是 config 里定义的别名。执行 ssh internal 时会自动先建立到跳板的连接再做转发,连 agent 转发都省了。
四、端口转发也能写进配置
把 LocalForward 8080 127.0.0.1:80 写进对应的 Host 段,以后每次连接都会自动开好本地转发,临时排查线上问题时特别方便,不用每次记 -L 的长参数。
五、几个容易踩的坑
第一,config 文件权限必须是 600,权限太开放时 SSH 会忽略它;第二,Host 别名只在本机生效,git 的 remote 和 scp 都可以用它,但服务器端并不认识这个名字;第三,改完 config 不需要重启任何服务,下次连接即生效,可以用 ssh -G 别名打印最终生效的参数来验证配置是否正确。
把常用连接写进 config 之后,相当于给所有服务器做了一层本地 DNS 加快捷方式,配合 ssh-copy-id 一次配好公钥,日常运维就只剩 ssh 别名这一条命令。习惯养成后,多机管理的心智负担会明显下降。
- 点赞
- 收藏
- 关注作者
评论(0)