同一台电脑配置多个git公钥

Git 同一客户端多个Git账号
一般公司使用 GitLab 搭建的内部私有 Git 仓库,同时自己平时用 github 的账号,存在两个Git,如果直接使用SSH-Key会把之前的GitLab的SSH-Key覆盖。

有两个 Github 账号,同一台电脑同时连接两个账号进行版本控制。
公司使用 Gitlab账号,自己使用 Github 账号。
1、查看Git全局设置
1.1、查看已设置全部
$ git config --list
查看全局设置

 

1.2、清除 Git 的全局设置
如果对 Git 设置过的 user.name 和 user.email,类似的这种设置:

$ git config --global user.name "your_email_prefix"
$ git config --global user.email "your_email"
删除全局Git设置,不然会冲突。删除全局设置的方法:

$ git config --global --unset user.name "your_email_prefix"
$ git config --global --unset user.email "your_email"
2、生成新的SSH keys
生成 SSH keys 命令

$ ssh-keygen -t rsa -C "your_email"
这里我以自己的账号为例

Github账号:jxaufang168@github.com
Gitlab账号:liangrh@sundaytech.cn
2.1、生成 GitLab 账号的SSH-Keys
1、用命令在控制台生成私钥和私钥

# 在~/.ssh/目录会生成gitlab_id_rsa和gitlab_id_rsa.pub私钥和公钥。
# 我们将gitlab_id-rsa.pub中的内容粘帖到公司GitLab服务器的SSH-key的配置中。
$ ssh-keygen -t rsa -C "liangrh@sundaytech.cn" -f ~/.ssh/gitlab_id_rsa
2、在 GitLab 管理面板设置,复制公钥 gitlab_id_rsa.pub 的内容到密钥框。

可用命令查看,也可以用编辑器查看。

$ cat gitlab_id_rsa.pub
SSH 密钥设置面板

2.2 ssh-add添加私钥

由于git会默认使用id_rsa,所以我们需要做些配置,告诉git根据不同的域名选择不同的私钥。

添加私钥

ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/xct_rsa

这里可能会出现:Could not open a connection to your authentication agent的错误提示。(无法打开到身份验证代理的连接)。这时可以先输入ssh-agent bash命令,之后在重新输入添加私钥命令。如没有出现此错误,则跳过该步骤。

ssh-agent bash

查看是否添加成功

// 如添加成功,则会打印出相关信息
ssh-add -l

成功后,我们还需要创建config文件,进行一些配置。用来指定私钥对应的域名。

 

2.3、添加 conig 配置文件
在~/.ssh目录下添加config配置文件用于区分多个SSH-Key

# 添加config配置文件
# vi ~/.ssh/config

# 文件内容如下:
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

报错:

Unable to negotiate with 47.98.49.44 port 22: no matching host key type found. Their offer: ssh-rsa

# aliyun
Host code.aliyun.com
Hostname code.aliyun.com
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
IdentityFile ~/.ssh/aly


# 配置文件参数
# Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
# HostName : 要登录主机的主机名
# User : 登录名
# IdentityFile : 指明上面User对应的identityFile路径
2.4、配置完,目录中的文件

$ cd ~/.ssh/
$ ls
github_id_rsa.pub
github_id_rsa
gitlab_id_rsa.pub
gitlab_id_rsa
known_hosts
3、验证连接Git
$ ssh -T git@github.com
Hi jxaufang168! You've successfully authenticated, but GitHub does not provide shell access.
# 上面是github的成功返回语句,下面是gitlab的成功返回语句。
# git@xxxxxx.com 缓存你公司的Git服务器域名
$ ssh -T git@xxxxxx.com
Welcome to GitLab, 梁荣辉!
如果连接不成功的话,用户命令查看错误信息

$ ssh -vT git@gihub.com #查看出错信息
4、无法连接问题
如果出现

Permission denied(Publickey)
解决方案:

以 Github 连接不上为例:

1、把私钥github_id_rsa,重新添加到ssh_agent,并验证连接

$ ssh-agent bash
$ ssh-add ~/.ssh/github_id_rsa
2、把公钥github_id_rsa.pub,重新添加到 Git 账号SSH Keys,再验证连接。

3、最终还是没办法连接成功,重新按上面步骤操作。

原文链接:https://blog.csdn.net/weixin_42257984/article/details/124788134

posted @ 2022-06-07 14:35  星云惊蛰  阅读(940)  评论(0)    收藏  举报