ssh config:把常用服务器登录信息写进配置,一行命令直连
第一次管云服务器时,登录命令往往是这样的:ssh -p 2222 user@203.0.113.10 -i ~/.ssh/work_key。服务器一多,这些参数就记不住了:哪台用了哪个端口、哪台要用哪个密钥、哪台的用户名不一样。很多人靠 shell 历史记录翻找,或者在备忘录里存一堆命令,既不方便也不安全。ssh 自带的 config 文件就是用来解决这个问题的:把连接信息写进 ~/.ssh/config,之后登录只需要 ssh 别名。
一、从一长串参数到一个别名
新建或编辑 ~/.ssh/config,把权限设为 600(ssh 对权限要求严格,组可写会直接拒绝使用):
touch ~/.ssh/config
chmod 600 ~/.ssh/config
然后写入一个 Host 块:
Host work
HostName 203.0.113.10
Port 2222
User deploy
IdentityFile ~/.ssh/work_key
从此登录只需要敲 ssh work。参数多了反而看得更清楚:每个字段各占一行,改端口、换密钥都在这里改一次,不用去翻历史命令。
二、一个文件管理所有服务器
Host 块可以写很多个,配合通配符还能给一批服务器设默认值:
Host web-*
User deploy
Port 2222
IdentityFile ~/.ssh/work_key
Host web-01
HostName 203.0.113.11
Host web-02
HostName 203.0.113.12
Host bastion
HostName 198.51.100.5
User admin
Port 22
IdentityFile ~/.ssh/bastion_key
ssh web-01 会自动继承 web-* 的 User、Port 和密钥,只需要单独写 IP。机器扩容时复制一个块、改个 IP 就行,比维护一份命令清单省事得多。
三、几个实用的小配置
除了基本信息,config 还能顺手解决几个常见痛点:
免输密码:配合 ssh-copy-id 把公钥传到服务器,之后 ssh 别名 直接登录,无需记忆密码。
连接复用:经常开关多个 ssh 会话会觉得慢,加上复用配置后同一主机的后续连接几乎秒开:
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 10m
长连接保活:服务器因超时断开时很恼人,客户端侧加两行即可:
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
跳板机跳转:内网机器通过跳板访问,不用先 ssh 到跳板再转一次:
Host db-inner
HostName 10.0.1.20
User dbadmin
ProxyJump bastion
四、两点注意事项
第一,config 文件里的密钥路径和用户名不要随手分享给别人,文件本身就是一份服务器清单,备份时也当作敏感资料处理。第二,如果一台机器的配置写错了,ssh 会给出明确的报错行号(Bad configuration option 会指到具体行),逐行排查即可。
把连接信息从「记在脑子里」变成「写在配置文件里」,是运维习惯上一个很小的转变,但服务器数量超过三台之后,省下的时间和避免的输错,都会让你庆幸早写了这个文件。
- 点赞
- 收藏
- 关注作者
评论(0)