一文教会git如何配置多SSH Key(Github+Gitlab)
对于工作了的伙伴来说,大家经常会配置多个SSH Key:
- SSH拉取的仓库不会反复的要求输入github用户名密码来验证自己的身份
- 需要将公司的Gitlab和个人的Github区分开
我这里以Mac电脑为例,演示如何配置多个SSH Key。Windows操作步骤一样,只不过ssh配置文件的路径有所变化。
.ssh文件位置:C:\Users\Administrator.ssh
hosts位置:C:\Windows\System32\drivers\etc\hosts
1 生成SSH Key
cd ~/.ssh
# 1. 生成一个 Github 用的 SSH-Key,其中 github_id_rsa 为密钥的文件名,~/.ssh/id_rsa_my_github 为密钥目录位置:
$ ssh-keygen -t rsa -C '[邮箱]' -f ~/.ssh/id_rsa_my_github
# 2. 生成一个 Gitlab 用的 SSH-Key,其中 id_rsa_gitlab 为密钥的文件名,~/.ssh/id_rsa_gitlab 为密钥目录位置:
$ ssh-keygen -t rsa -C '[邮箱]' -f ~/.ssh/id_rsa_gitlab
输入上面的命令后
最后会生成两份文件:
- id_rsa_gitlab私钥文件
- id_rsa_gitlab.pub公钥文件,需要将里面的内容复制到Github或者Gitlab上
2 配置config文件
# 新建git config文件
$ touch config
# 用 vim 编辑器打开 config 文件
$ vim config
配置文件内容:
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
# 如果生成多个 SSH-Key , 则按上面的格式继续往下写
其中 Host 和 HostName 填写 Git 服务器的域名,IdentityFile 指定私钥的路径(在第二步生成 SSH-Key 时,我们已经指定该路径,拷贝过来即可)。
- 比如我公司自建了github,域名为github.ziyi.com,那么就把配置文件中的Host、HostName对应改成github.ziyi.com即可
3 Github配置SSH Key
将开始生成的id_rsa_github.pub文件中的内容复制到Github上。
Gitlab上配置是同样的操作步骤(将id_rsa_gitlab.pub内容复制到Gitlab上,后续不再演示)
- 在github或者gitlab上新建SSH Keys,然后将.pub公钥复制上去即可
前往 ~/.ssh/ 目录下查看生成的文件:- 生成的文件以 [xxx]_rsa 开头, [xxx]_rsa 是私钥, [xxx]_rsa.pub 是公钥。
通过 cat 命令查看公钥文件里的内容,拷贝内容放到 Github 上就可以正常使用了:cat [xxx]_rsa.pub
3.1 登录Github,创建SSH Key
①登录Github,点击用户头像,点击Settings
②SSH and GPG Keys - New SSH Key
3.2 查看本地.pub公钥文件,将内容复制到Github
将本地电脑生成的.pub公钥文件复制到Github对应位置
# 将路径改为你自己的公钥文件所在位置
cat ~/.ssh/id_rsa_github
3.3 验证是否配置成功
测试是否配置成功(若有多个则分别进行测试):
#这里以 Github 为例,成功会返回 Hi [用户名]!You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@github.com
如果发现报错:github ssh -T 报错kex_exchange_identification: Connection closed by remote host Connection closed by 127.0.0.1 port 7890
①查看git的config文件中私钥位置是否配置正确
②查看是否是开了VPN
Gitlab、Gitee配置同理,此处不再赘述。
参考文章:https://blog.csdn.net/qq_42203909/article/details/120346639