一文教会git如何配置多SSH Key(Github+Gitlab)

一文教会git如何配置多SSH Key(Github+Gitlab)

对于工作了的伙伴来说,大家经常会配置多个SSH Key:

  1. SSH拉取的仓库不会反复的要求输入github用户名密码来验证自己的身份
  2. 需要将公司的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

输入上面的命令后
一文教会git如何配置多SSH Key(Github+Gitlab)_第1张图片

最后会生成两份文件:

  • 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
一文教会git如何配置多SSH Key(Github+Gitlab)_第2张图片
②SSH and GPG Keys - New SSH Key
一文教会git如何配置多SSH Key(Github+Gitlab)_第3张图片

3.2 查看本地.pub公钥文件,将内容复制到Github

将本地电脑生成的.pub公钥文件复制到Github对应位置

# 将路径改为你自己的公钥文件所在位置
cat  ~/.ssh/id_rsa_my_github.pub

在这里插入图片描述
一文教会git如何配置多SSH Key(Github+Gitlab)_第4张图片

3.3 验证是否配置成功

测试是否配置成功(若有多个则分别进行测试):

#这里以 Github 为例,成功会返回 Hi [用户名]!You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T [email protected]

如果发现报错:github ssh -T 报错kex_exchange_identification: Connection closed by remote host Connection closed by 127.0.0.1 port 7890
①查看git的config文件中私钥位置是否配置正确
一文教会git如何配置多SSH Key(Github+Gitlab)_第5张图片

②查看是否是开了VPN

Gitlab、Gitee配置同理,此处不再赘述。

参考文章:https://blog.csdn.net/qq_42203909/article/details/120346639

你可能感兴趣的:(demo,git,ssh,github,ssh,key,gitlab)