.ssh/config 本质上就是 SSH 的连接配置文件。
它最适合这些场景:
- 多个 Git 账号;
- 多个服务器;
- 不同服务器使用不同端口;
- 不同主机使用不同私钥;
- 想给复杂 SSH 地址起一个简单别名。
配置好以后,日常使用 Git 或 SSH 会方便很多,也能避免每次手动指定一堆参数。
这个文件一般位于:
| |
的作用是给 SSH 连接做统一配置。平时连接 GitHub、GitLab、服务器时,如果账号多、私钥多、端口不同,就可以通过这个文件把配置集中管理起来。
.ssh/config 可以解决什么问题
常见用途主要有几个:
| 场景 | 作用 |
|---|---|
| 自定义主机别名 | 用短名字代替完整域名 |
| 指定私钥 | 不同 Git 账号或服务器使用不同私钥 |
| 指定端口 | 服务器 SSH 端口不是默认的 22 时使用 |
| 指定用户名 | 不用每次都手动写 git@xxx 或 root@xxx |
比如公司 GitLab 的 SSH 端口不是 22,或者自己同时有个人 GitHub 和公司 GitHub 账号,就很适合用 .ssh/config 管理。
示例配置
| |
几个字段的含义:
Host:自己定义的主机别名。HostName:真实的域名或 IP。User:SSH 登录用户名,Git 仓库常用的是git。Port:SSH 端口,不写时默认是22。IdentityFile:指定使用哪一个私钥文件。
使用方式
配置好以后,就可以直接使用 Host 里定义的名字。
比如上面配置了:
| |
那么克隆仓库时可以写成:
| |
这里的 gitlab-company 会自动映射到:
| |
这样就不用每次都手动指定域名、端口和私钥了。
Windows 下路径怎么写
在 Windows 中,IdentityFile 可以写成这种形式:
| |
也可以使用 ~ 表示当前用户目录:
| |
我个人更倾向于用 ~,配置会更简洁,也更方便迁移。
容易踩的几个点
1. 文件名必须是 config
这个文件不能带扩展名,正确文件名是:
| |
Windows 默认可能会隐藏扩展名,所以创建文件时要特别注意。
2. 私钥路径要写对
如果提示找不到私钥,可以先检查 IdentityFile 路径是否正确。
也可以用下面命令测试:
| |
如果是自定义 Host,比如:
| |
就可以测试:
| |