[实操] 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-ed25519
gitblit
不支持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-rsa
3.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-ed25519
User:用户名,如果和登录名不一致,会出错
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-ed25519
4. 上传公钥
登录
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
config中增加两个属性
HostKeyAlgorithms ssh-rsa
PubkeyAcceptedKeyTypes ssh-rsa
然后再运行测试