同一台pc上设置两个及以上gitee账号的ssh-key
(记录在使用git的ssh秘钥时遇到的问题)
git推送过程中常见错误:
Access deined: You do not have permission push to this repository |
环境
- git已经添加公钥
- 而且是同一台主机生成并添加了多个git的账号ssh秘钥。
期间我网上查找解决的办法,大多是说没有添加公钥,添加公钥要在账号下而不是在仓库下添加,或者就是说账号的主邮箱必须是公钥中的那个添加的邮箱,不管是不是对的,都尝试了下,都不行,
运行命令:ssh-keygen -t rsa -C ‘your_email@example.com’ ;【邮箱仅仅是识别用的key,你可以输入任何内容作为 注释!】
-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。
-f 指定密钥文件存储文件名。
以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码。
最后再验证git时才发现原因所在,如下:
ssh -T git@gitee.com |
显示的是darktom账号的连接情况。但是我此时是配置的另外一个账号的公钥。
最后查阅资料大概了解了,一般git会通过 ssh -T git@host 去寻找 .ssh中的config文件对应的host与hostname以及使用正确的私钥去和对应账号下的公钥匹配,改文件不是自己生成的。默认情况下是没有的,也就是说没有此文件时 ,不论添加多少个账号的秘钥对,ssh -T git@host 连接测试都只是会测试第一次配置git账号秘钥对间 (host默认对应的私钥 与 账号的公钥) 的连接。所以说我们要添加 其host与其对应使用的秘钥间的映射关系表。
如下,在 ~/ .ssh 路径下创建 config文件
#gitee1 第一个gitee的账号 |
- host: 对应的自定义主机名
- hostname : 对应的gitee的域名
- PreferredAuthentications:公钥
- IdentityFile: 验证的本地私钥文件
(以此针对不同的host 使用不同的私钥文件去进行验证,当然不同账号的公钥也得与其私钥匹配且不同了。)
最后验证结果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 noticase!
评论
ValineLivere