文章

同一台电脑配置多git账户的密钥对。

2021年8月13号,gayhub取消了密码验证方式,只提供密钥验证方式,由于之前电脑密钥配置了gitee的私钥,所以传统配置方式没法识别两个ssh密钥,记录一下。

一、准备2个密钥对,一个用于gitee,一个用于github,如果存在,就删干净点,还有know_host.

1
2
3
4
5
6
# 生成gitee的密钥对
ssh-keygen -t rsa -f ~/.ssh/id_rsa_gitee -C "gitee-user@email.com"
# 一路按enter即可
# 生成github的密钥对
ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C "github-user@email.com"
# 一路按enter即可

至此,密钥对准备完成。

二、分别将两个密钥对各自配置到服务端,具体配置方法各不相同,但是大致一样。

大多是在各自的配置选项中找到ssh配置,然后将公钥复制到里面,添加进去即可。 配置完成后可以在本地测试一下是否成功。如下:

1
2
3
4
# 测试github的账户是否配置成功
ssh -T git@github.com -i ~/.ssh/id_rsa_github
# 测试gitee的账户是否配置成功
ssh -T git@gitee.com -i ~/.ssh/id_rsa_gitee

三、配置config文件来区分git命令到底是用哪个网站

在 .ssh 目录下创建一个 config 文本文件,每个账号配置一个Host节点,主要配置项说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# ~/.ssh/config 配置多个git的ssh-key
# 第一个默认的SSH Key
Host github.com
    HostName github.com
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedKeyTypes +ssh-rsa
    IdentityFile C:\\Users\\xxx\\.ssh\\id_rsa_github
    PreferredAuthentications publickey

# 第二个SSH Key
Host gitee.com
    HostName gitee.com
    IdentityFile C:\\Users\\xxx\\.ssh\\id_rsa_gitee
    PreferredAuthentications publickey
    

# 私服
Host 120.24.49.14
    HostName 120.24.49.14
    IdentityFile C:\\Users\\xxx\\.ssh\\id_rsa_zhengqianfang
    PreferredAuthentications publickey

配置代理和取消代理的命令

1
2
git config --global http.proxy 'socks5://127.0.0.1:7890'
git config --global --unset http.proxy

OVER!

因难杂症 github无法连上 refuse

两步,安装一个软件ncat,全局安装(非个人账户),配置环境变量,确保在命令行中可以运行ncat命令。 将git的config文件github目录下的配置改为:

1
2
3
4
5
Host github.com
    HostName github.com
    IdentityFile C:\\Users\\xxx\\.ssh\\id_rsa_github
    PreferredAuthentications publickey
    ProxyCommand ncat --proxy-type socks5 --proxy 127.0.0.1:4781 %h %p

参考资料

本文由作者按照 CC BY 4.0 进行授权