风行的博客

在 Git 环境下维护多个 SSH Keys

SSH Key - 通过 SSH 密钥登录服务器,可以避免密码在网络中传输,也就保证了登录过程的安全,也不会因此受到中间人攻击,如果在 SSH 密钥登录基础上再加上密码短语 (passphrase)的使用,安全性便会再次提高。


作为一个程序猿,我们经常会往公司的 Git 服务器上提交代码,还有很多猿在 GitHub 上也有自己的开源项目,不管是公司的服务器还是 GitHub 服务器都会在你提交代码时通过维护在服务器上的公钥进行验证,如果你希望能够以不同身份向不同服务器提交代码,那么你需要在机器上维护多个 SSH Key,并且将不同的公钥添加到不同的服务器中。

下面介绍下在已经拥有一个用于公司服务器的 SSH Key 后,如何再添加一个用于 GitHub 的 SSH Key。

首先进入 .ssh 目录

1
cd ~/.ssh

创建用于 GitHub 的 SSH Key,根据提示将名字设置为 id_rsa_github

1
ssh-keygen -t rsa -C "注册 GitHub 时用的 Email"

因为 Git 默认只读取 id_rsa,为了让 SSH 识别新的私钥,需将 id_rsa_github 添加到 SSH Agent 中

1
ssh-add id_rsa_github

将 id_rsa_github.pub 中的公钥复制到 GitHub 帐户中,并为 GitHub 项目指定提交代码时使用哪个用户

- 通过 SourceTree 设置:项目 -> 设置 -> 高级 -> 直接修改用户名和邮箱
- 进入项目根目录,然后打开 .git 目录下的 config 文件,修改 [user] 部分

如果 .ssh 目录下没有 config 文件,便新增一个

1
touch config

配置 config 文件,指明服务器及所使用的密钥

1
2
3
4
5
Host github.com
IdentityFile ~/.ssh/id_rsa_github

Host gitlab.xxx.com
IdentityFile ~/.ssh/id_rsa


如果你使用 SourceTree 的话,也可以在添加 GitHub 帐户时直接生成密钥,它会帮你配置好一切并上传,这样就省去了上面一切操作步骤,但仅支持添加 GitHub 和 BitBucket 账号。