多个SSH私钥配置不当导致Git push 失败的分析及解决方法

今天写了几笔项目,推给coding.net的时候AS报错。在更新之前这个是老毛病了,终端上手动push一下就好。

不过这次不同,终端上显示:

Permission denied (publickey).
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。

想起最近在弄VPS,可能是SSH Key的设置上出了问题,于是检查一下(指定了私钥位置):

ssh -i ~/.ssh/id_rsa  -T [email protected]

回复的信息正常,说明SSH连接没问题:

Coding 提示: Hello NeroS, You've connected to Coding.net via SSH. This is a deploy key.

然后再推送一下,怪了,依然fail。

仔细回想一下,在给VPS设置SSH密钥连接的时候,为了防止覆盖掉原来的私钥,特地换了一个目录生成后拷贝过去,最后好像还在某个配置文件里添加了一行。那里应该是SSH连接是寻找私钥的默认目录,翻了翻,原来是这个:

/etc/ssh/sshd_config

关键部分如下:

#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
    IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
    IdentityFile ~/.ssh/id_rsa_vps
#   Port 22

其中大多数都是被注释掉的,默认不起作用。配置VPS的时候我加了最下面的私钥,原来的没有动。

将默认的 ~/.ssh/id_rsa 前面的注释去掉之后,就一切正常了。经测试,连接两个不同的服务器均无需单独指定私钥文件,由此也可以得出,该处的配置确实是默认的寻找私钥的目录。如果有多个私钥同时使用,添加在此处即可。

猜你喜欢

转载自www.cnblogs.com/NeroSong/p/9054226.html