~/.ssh/config文件可统一管理多台Linux服务器连接,通过Host块定义别名、HostName、User、Port、IdentityFile等参数,配合IdentitiesOnly yes防密钥混用、ProxyJump实现跳板机穿透、ControlMaster启用连接复用,并须设置chmod 600权限。

直接用 ~/.ssh/config 文件就能统一管理多台 Linux 服务器,不用每次敲长命令、输密码或指定密钥路径。核心是把每台服务器的连接参数(IP、端口、用户、密钥)写进一个结构化配置块里,再用简洁别名快速连接。
配置文件基础写法
在本地电脑的 ~/.ssh/config 中,每个服务器用一个 Host 块定义。注意:文件权限必须是 600(chmod 600 ~/.ssh/config),否则 SSH 会忽略它。
-
Host后面是你自己起的简短别名,比如web01、db-prod -
HostName是真实 IP 或域名 -
User指定登录用户名,避免每次都加user@host -
Port显式写端口(非22时必需) -
IdentityFile指向对应私钥,确保用对密钥
示例:
Host web01
HostName 192.168.1.101
User admin
Port 22
IdentityFile ~/.ssh/id_rsa_web
<p>Host db-prod
HostName db.example.com
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519_prod
之后只需运行 ssh web01 或 ssh db-prod,自动套用全部参数。
关键安全控制:防止密钥混用
当多台服务器用不同密钥时,SSH 默认可能尝试所有可用密钥,容易被拒绝或暴露。必须加上 IdentitiesOnly yes:
- 强制 SSH 只用
IdentityFile指定的密钥,不试探其他私钥 - 尤其适用于生产环境和跳板机场景
例如:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
Host prod-server
HostName prod.internal
User ops
IdentityFile ~/.ssh/id_rsa_prod
IdentitiesOnly yes
支持跳板机访问内网服务器
如果目标服务器不能直连(如在内网),需先经过跳板机(bastion)。用 ProxyJump 最简洁:
- 先定义跳板机
Host bastion - 在目标服务器块中加
ProxyJump bastion - SSH 自动建立两跳连接,无需手动登录中间机
示例:
Host bastion
HostName jump.company.com
User admin
IdentityFile ~/.ssh/id_rsa_bastion
<p>Host app-node
HostName 10.0.1.50
User app
IdentityFile ~/.ssh/id_rsa_app
ProxyJump bastion
执行 ssh app-node 即完成穿透连接。
提升效率:启用连接复用
频繁连接同一台服务器时,重复握手和认证很耗时。开启复用后,首次连接建好通道,后续请求直接复用:
- 在配置顶部加通用块
Host *(星号匹配所有主机) -
ControlMaster auto自动管理主连接 -
ControlPath指定 socket 文件位置(路径含变量确保唯一) -
ControlPersist 1h断开后保持通道 1 小时,下次秒连
配置片段:
Host *
ControlMaster auto
ControlPath ~/.ssh/control-%r@%h:%p
ControlPersist 1h
这个设置对开发调试、脚本批量操作特别实用,省去反复认证时间。

















