ssh客户端配置文件~/.ssh/config由用户在本地创建维护,用于简化远程连接,需设权限600;支持host块、别名、端口、密钥等配置及通配符匹配,并可设全局安全与连接优化参数。

服务器 SSH 客户端配置文件(即 ~/.ssh/config)不是给服务器用的,而是你本地机器上用来简化和规范连接远程服务器行为的。它由你自己在本地用户目录下创建和维护,不需部署到服务器上。
配置文件位置与基础结构
该文件必须放在当前用户的 ~/.ssh/ 目录下,文件名严格为 config(无后缀),权限应设为 600(仅属主可读写):
mkdir -p ~/.ssh && chmod 700 ~/.sshtouch ~/.ssh/config && chmod 600 ~/.ssh/config
文件采用“主机块”组织,每个块以 Host 开头,后面是具体配置项;空行或注释行(# 开头)会被忽略。
常用配置项与写法示例
最典型的是为某台服务器定义别名、用户名、端口和密钥路径:
Host myprod
HostName 203.0.113.45
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519_prod
这样执行 ssh myprod 就等价于 ssh -p 2222 deploy@203.0.113.45 -i ~/.ssh/id_ed25519_prod。
-
HostName:真实 IP 或域名(必填,除非用默认解析) -
User:远程登录用户名(不写则用当前本地用户名) -
Port:非默认 22 端口时才需指定 -
IdentityFile:私钥路径,支持绝对或相对路径(推荐绝对路径)
通配符与批量配置技巧
用 * 和 ? 可匹配多个主机,减少重复:
Host *.staging
User admin
IdentityFile ~/.ssh/id_rsa_staging
<p>Host jumpbox
HostName 192.168.10.1
User ops
</p>
运行 ssh app.staging 会自动使用 admin 用户和 staging 密钥;而 ssh jumpbox 则走跳板机专用配置。
- 多个模式可用空格分隔:
Host web1 web2 prod-web - 通配符不匹配 IP 地址字面量(如
192.168.1.1),只匹配你在命令中输入的主机标识符
安全与连接优化建议
可在全局块(Host *)中统一设置基础策略:
Host *
StrictHostKeyChecking yes
UserKnownHostsFile ~/.ssh/known_hosts
ConnectTimeout 10
ServerAliveInterval 60
ServerAliveCountMax 3
IdentitiesOnly yes
-
StrictHostKeyChecking yes:防止中间人攻击,首次连接必须人工确认 -
ServerAliveInterval+ServerAliveCountMax:避免网络空闲断连 -
IdentitiesOnly yes:强制只用配置中指定的密钥,不尝试 ssh-agent 中其他密钥











