前言:
很多时候,我们一台机器上要使用多个Git库,比如 GitHub、GitLab、OSChina、CSDN、以及 自己公司的。那么 rsa就要有多份。那么该如何让这些共同存在呢?
原理就是:建立多个不同的rsa 然后 在ssh config中分别不同的配置。
操作步骤:
一、生成公钥和私钥(SSH Keys)
说明:SSH key 可以让你的电脑和 远程仓库 之间建立安全的加密连接,从而实现免密登录,能够在不输入Git密码的情况下,进行版本控制。
- 终端输入如下命令:
// 使用如下命令来生成 SSH Keys
ssh-keygen -t rsa -C "你的Git账号邮箱地址"
- 执行完这条命令之后, 会弹出如下提示:
Enter file in which to save the key (/Users/renbo/.ssh/id_rsa):文件名
在这句话后面可以自定义要生成的文件名(如:github_rsa、oschina_rsa、csdn_rsa等);如果不输入文件名,默认会生成id_rsa.pub
(公钥)、id_rsa
(私钥)
下一步... 不输入密码直接回车。
二、将公钥添加到网站
// 打开公钥文件,将公钥(`id_rsa.pub` 文件内容)添加到对应网站(如:GitHub / GitLab / OSChina / 自己公司的)上的SSH keys中。
open ~/.ssh/id_rsa.pub
四、修改 ssh config 配置文件
1.打开config文件
// 编辑config文件
vi ~/.ssh/config
2.添加如下内容
# 编写配置文件,支持多个账号自动登录
# 配置GitLab,公司账号1:
Host git-server
HostName 192.168.68.85
Port 22
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/work1_rsa
# 配置GitLab,公司账号2:
Host git-server
HostName 192.168.75.30
Port 22
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/work2_rsa
# 配置GitHub
Host github.com
HostName github.com
User developer@irenb.com
IdentityFile ~/.ssh/github_rsa
# 配置oschina (旧主机名是:git.oschina.net)
Host gitee.com
HostName gitee.com
User developer@irenb.com
IdentityFile ~/.ssh/oschina_rsa
# 配置coding
Host coding.net
HostName coding.net
User developer@irenb.com
IdentityFile ~/.ssh/coding_rsa
五、测试SSH连接
- 终端输入如下命令:
ssh -T git@github.com
- 输入yes回车,如果有警告,根据提示进行操作。
如:下面需要添加GitHub的Host地址13.229.188.59 github.com
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxWGl7E1IGOCspRomTxxxxxxxxxx8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,13.229.188.59' (RSA) to the list of known hosts.
Hi 91renb! You've successfully authenticated, but GitHub does not provide shell access.
六、删除本地全局设置
如果之前使用过程中使用过git config --global user.name "" 或者 git config --global user.email 命令,git会在本地产生一个.gitconfig文件,这个文件中保存了全局的git帐号信息,应该删除掉。