问题出现
有多个github 账号的配置ssh的情况下,使用git通过git协议去访问使用另一个账号的仓库的时候, 就出现了问题。整体效果就是clone、pull、push这些操作都是报错找不到仓库。
|
|
在github网站也确认了仓库的存在。
ssh -T git@github.com
是可以正常显示成功连接的。
这里细心一点,其实就能发现问题了,因为账号名不对。 但可惜的是我没有发现
问题原因
问题原因就是这个ssh密钥使用的问题。我使用了ssh-agent管理我的密钥。第一个账号的git可以正常使用,是因为刚好, 进行ssh密钥匹配的顺序,第一个账号的ssh密钥在前面,就公钥匹配上了,进行私钥匹配,成功进入账号。
而在要使用第二个账号的仓库地址的时候,由于按照匹配顺序,github先匹配上了第一个账号的ssh密钥。 于是,我实际链接的账号是第一个账号,然后按照第二个账号的地址去索引,就会找不到仓库。
问题解决
这里就涉及到如何指定ssh密钥的问题。现在 2.40.1 的 git 还是没有如同ssh的"-i"。
git clone -i ~/.ssh/xx git@github.com:xx/xx.git
这样的命令是会直接报错的。
我在网上搜索找到了一篇博客,里面有说道通过设置 “GIT_SSH” 变量或者使用脚本封装的方式实现指定ssh密钥文件。
https://zhangnew.com/how-to-specify-an-ssh-key-file-with-the-git-command.html
最近在网上才发现(https://segmentfault.com/a/1190000019014740),可以使用ssh的配置文件更简单的使用。配置如下:
|
|
第一个用于设置github连接的默认的密钥,因为我希望默认不要使用ssh-agent中的密钥,所以需要配置这个。 后面则是通过设置Host,实现分别使用不同的密钥的效果。
|
|