.ssh/config 本质上就是 SSH 的连接配置文件。

它最适合这些场景:

  • 多个 Git 账号;
  • 多个服务器;
  • 不同服务器使用不同端口;
  • 不同主机使用不同私钥;
  • 想给复杂 SSH 地址起一个简单别名。

配置好以后,日常使用 Git 或 SSH 会方便很多,也能避免每次手动指定一堆参数。

这个文件一般位于:

1
C:\Users\用户名\.ssh\config

的作用是给 SSH 连接做统一配置。平时连接 GitHub、GitLab、服务器时,如果账号多、私钥多、端口不同,就可以通过这个文件把配置集中管理起来。

.ssh/config 可以解决什么问题

常见用途主要有几个:

场景作用
自定义主机别名用短名字代替完整域名
指定私钥不同 Git 账号或服务器使用不同私钥
指定端口服务器 SSH 端口不是默认的 22 时使用
指定用户名不用每次都手动写 git@xxxroot@xxx

比如公司 GitLab 的 SSH 端口不是 22,或者自己同时有个人 GitHub 和公司 GitHub 账号,就很适合用 .ssh/config 管理。

示例配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 配置 GitHub
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_github

# 配置公司 GitLab
Host gitlab-company
    HostName gitlab.company.com
    User git
    Port 2222
    IdentityFile ~/.ssh/id_rsa_company

几个字段的含义:

  • Host:自己定义的主机别名。
  • HostName:真实的域名或 IP。
  • User:SSH 登录用户名,Git 仓库常用的是 git
  • Port:SSH 端口,不写时默认是 22
  • IdentityFile:指定使用哪一个私钥文件。

使用方式

配置好以后,就可以直接使用 Host 里定义的名字。

比如上面配置了:

1
Host gitlab-company

那么克隆仓库时可以写成:

1
git clone git@gitlab-company:project/repo.git

这里的 gitlab-company 会自动映射到:

1
2
3
HostName gitlab.company.com
Port 2222
IdentityFile ~/.ssh/id_rsa_company

这样就不用每次都手动指定域名、端口和私钥了。

Windows 下路径怎么写

在 Windows 中,IdentityFile 可以写成这种形式:

1
IdentityFile C:/Users/你的用户名/.ssh/id_rsa

也可以使用 ~ 表示当前用户目录:

1
IdentityFile ~/.ssh/id_rsa

我个人更倾向于用 ~,配置会更简洁,也更方便迁移。

容易踩的几个点

1. 文件名必须是 config

这个文件不能带扩展名,正确文件名是:

1
config

Windows 默认可能会隐藏扩展名,所以创建文件时要特别注意。

2. 私钥路径要写对

如果提示找不到私钥,可以先检查 IdentityFile 路径是否正确。

也可以用下面命令测试:

1
ssh -T git@github.com

如果是自定义 Host,比如:

1
Host gitlab-company

就可以测试:

1
ssh -T git@gitlab-company