[实操] Windows下Git多账号SSH配置
简介:
生成 SSH 公钥 如前所述,许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 这个过程在所有操作系统上都是相似的。
1. 打开用户.ssh目录
在 C盘 → 用户 → 用户名 → .ssh

2. 生成 RSA 密钥
在目录中空白处 右键 ,选择 Git Bash Here

在 Git命令窗口 输入
$ ssh-keygen -t rsa -C garson_xq有些站点已经不支持rsa了,推荐使用更强的ed25519
ssh-keygen -t ed25519 -b 256
参数说明:garson_xq 是自己取的,一个对rsa密钥的标识,用于区分不同的rsa

如果密钥已经生成,也可以在公钥文件中修改


输入密钥文件名,示例

id_rsa 是固定的开头
garson 代表用户名
xq 代表计算机的名称
infnitee 代表服务器的标识
Enter passphrase 是密码,直接为空就好,回车,执行后如图所示:

目录中会生成一对密钥文件

id_rsa_garson_xq_infnitee:私钥文件
id_rsa_garson_xq_infnitee.pub:公钥,需要上传到 gitblit
3. 配置密钥 config
在 .ssh 文件夹中 新建一个文本文件 config,不需要扩展名
通用配置,如果是RSA配置如下
HostKeyAlgorithms ssh-rsa
PubkeyAcceptedKeyTypes ssh-rsa如果是ed25519配置如下
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519gitblit 不支持ed25519
3.1 gitblit
如果服务器没有配置域名,IP 访问,配置如下
# 配置IP地址 infnitee gitblit,
Host 192.168.1.105
HostName 192.168.1.105
Port 29418
IdentityFile C:\\Users\\XQ-Garson\\.ssh\\id_rsa_garson_xq_infnitee
PreferredAuthentications publickey
User GarsonZhang如果服务器配置了域名,域名访问,配置如下
# 配置域名 infnitee gitblit,
Host git-test.infnitee.com
HostName git-test.infnitee.com
Port 29418
IdentityFile C:\\Users\\XQ-Garson\\.ssh\\id_rsa_garson_xq_infnitee
PreferredAuthentications publickey
User GarsonZhang
HostKeyAlgorithms ssh-rsa
PubkeyAcceptedKeyTypes ssh-rsa3.2 github
github配置如下
# 配置github.com
Host github.com
HostName github.com
IdentityFile C:\\Users\\popfisher\\.ssh\\id_rsa_github
PreferredAuthentications publickey
User username1
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519User:用户名,如果和登录名不一致,会出错
Port:gitblit模式端口是29418

3.3 gitee
# 配置IP地址 gitee.com
Host gitee.com
HostName gitee.com
IdentityFile C:\\Users\\garson\\.ssh\\id_ed25519
PreferredAuthentications publickey
User garsonzhang
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed255194. 上传公钥
登录 gitblit 站点,登录用户,右上角打开 用户中心

复制公钥在 SSH Key 文本框中,添加 SSH Key,公钥是生成的RSA以 pub 结尾的文件中


添加后如图:

5. 测试SSH配置
在 git命令 窗口中 输入 ssh -T 服务器
服务器是在config中配置的 host

输入 yes
运行成功的截图

如果出现报错:

请检查 config中配置的 User 是否和登录名一致
配置完成后,就可以不需要输入密码进行直接拉取和提交了
问题解决
升级后出现问题 Unable to negotiate with 39.97.107.98 port 29418: no matching host key type found. Their offer: ssh-rsa,ssh-dss
$ ssh -T git.infnitee.com
Unable to negotiate with 39.97.107.98 port 29418: no matching host key type found. Their offer: ssh-rsa,ssh-dss![[实操] Windows下Git多账号SSH配置](/images/article_image/255329187819525.png)
config中增加两个属性
HostKeyAlgorithms ssh-rsa
PubkeyAcceptedKeyTypes ssh-rsa![[实操] Windows下Git多账号SSH配置](/images/article_image/255329414307845.png)
然后再运行测试
![[实操] Windows下Git多账号SSH配置](/images/article_image/255329569009669.png)


