上一篇文章中我们介绍了 ssh 命令的基本用法和常用选项。可是每次都要手动输入繁琐的 IP、用户名、端口号等,实在是麻烦。
这时 SSH Config 文件 就能一次性解决这些问题。它就像收藏夹一样,把常用服务器的连接信息保存下来,然后用 别名(Alias) 轻松访问。
我在完全不知晓 config 文件的“初学者”时期,曾把常用的 ssh 命令直接写进 .bashrc 的 alias 中。后来学会了 config 文件后,才意识到自己当时的做法有多么低效。

SSH Config 文件是什么?
SSH Config 文件 是用来定制 SSH 客户端行为的配置文件。把特定主机的连接信息(用户名、端口、使用的密钥文件等)预先保存,之后只需使用短别名即可连接。
- 位置:通常位于用户主目录下的
.ssh文件夹中,文件名为config。如果你刚安装 SSH,可能还没有这个文件,需要手动创建。 - 文件创建:如果
~/.ssh/config不存在,可以直接创建。务必将权限设置为 600。
touch ~/.ssh/config
chmod 600 ~/.ssh/config # 为安全起见,必须设置权限!
Config 文件编写规则
Config 文件是一个简单的文本文件,每个主机的设置以 Host 关键字开始,形成块结构。
基本结构
Host [别名]
[选项1] [值1]
[选项2] [值2]
...
Host [别名]:标识块的开始,并定义你将使用的 别名(Alias)。你也可以直接写实际的主机地址(IP 或域名),甚至使用通配符(*、?)。- 缩进:
Host下的选项必须缩进。空格或制表符都可以,但保持一致性更好。 - 选项:在
Host下列出你想在使用该别名时应用的各种 SSH 选项。它们与ssh -选项的用法相同。
常用选项
| 选项 | 说明 | 示例值 |
HostName |
实际连接的服务器 IP 或域名 | 192.168.1.100 或 example.com |
User |
远程服务器的用户名 | ubuntu、ec2-user、root |
Port |
远程服务器的 SSH 端口(默认 22) | 2222 |
IdentityFile |
连接时使用的私钥文件路径 | ~/.ssh/id_ed25519_myserver |
ForwardAgent |
启用 SSH 代理转发(ssh-agent) |
yes |
StrictHostKeyChecking |
是否严格检查主机密钥(推荐 yes) |
no(初期测试时临时使用) |
PortForwarding |
是否允许端口转发 | yes |
LocalForward |
本地端口转发设置(等同 -L) |
8080 localhost:80 |
ServerAliveInterval |
检查服务器存活的间隔(秒) | 60 |
ServerAliveCountMax |
失败后重试次数 | 3 |
SSH Config 文件编写示例
让我们把常用的一些服务器添加到 ~/.ssh/config。
# 第一个服务器:Web 服务器(别名:webserver)
Host webserver
HostName 192.168.1.100
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_ed25519_webserver # 使用专属密钥
# 第二个服务器:开发服务器(别名:devbox)
Host devbox
HostName dev.example.com
User developer
IdentityFile ~/.ssh/id_rsa_dev # RSA 密钥
# 连接时将本地 8000 端口转发到远程 80 端口
LocalForward 8000 localhost:80
# 第三个服务器:所有 AWS EC2 服务器(别名:aws-*)
Host aws-*
User ec2-user
IdentityFile ~/.ssh/aws_ec2_key.pem
# 防止连接中断,定期发送信号
ServerAliveInterval 60
ServerAliveCountMax 3
# 特定 IP 段的通用设置(别名:10.0.0.*)
Host 10.0.0.*
User admin
Port 22
说明:
webserver:使用ubuntu用户、2222端口和id_ed25519_webserver密钥连接192.168.1.100。devbox:使用developer用户、id_rsa_dev密钥连接dev.example.com,并将本地 8000 端口转发到远程 80 端口。aws-*:所有以aws-开头的别名都会使用ec2-user和aws_ec2_key.pem,并保持连接活跃。10.0.0.*:匹配10.0.0.x形式的 IP,默认使用admin用户和 22 端口。
事实上,我很少使用
*通配符。通常我会为每台服务器单独配置 1:1 的映射,便于管理。
如果同一台服务器需要不同配置,我会为每种情况添加一个别名,像点餐一样挑选别名后ssh my-alias即可。

如何使用 Config 文件
保存好 Config 后,实际连接会变得更简单。让我们基于上面的示例来试试。
1. 用别名连接
只需使用别名即可。
- 使用
webserver别名:
ssh webserver
Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':
ubuntu@webserver-ip:~ $
这条命令内部等价于
ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100。
- 使用
devbox别名:
ssh devbox
Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
developer@devbox-domain:~ $
(同时本地 8000 端口会转发到 dev.example.com 的 80 端口)
Config 文件的优势
- 便利性:用短别名替代冗长命令,减少输入错误,节省时间。
- 生产力:频繁访问的服务器可以快速切换,提升工作效率。
- 易于管理:所有连接设置集中在一个文件,维护更简单。服务器 IP 变更时,只需改动 Config 即可。
- 安全性:敏感信息(如密钥路径)不再出现在命令历史中。
结语
SSH Config 文件是每位使用 SSH 的开发者和系统管理员必备的工具。通过它,你可以让 SSH 连接体验更便捷、更高效。打开 ~/.ssh/config,为你常用的服务器创建别名吧!
如果你想了解更多关于 SSH 的内容,右侧搜索框中输入 ssh,即可找到相关文章。
有任何疑问,欢迎在评论区提问!