GitHub SSH Keys的配置和问题解决

96
Midorra
0.3 2017.09.12 18:43* 字数 487

使用Github首先要做的就是配置SSH认证,这个公钥私钥的使用方法和我的另外一篇文章《ssh rsa_key的生成和远程连接》中提到的是相同的逻辑,即先使用 ssh-keygen -t rsa -C "youremail@xxx.com" 生成RSA公钥和密钥,然后再将公钥上传到Github的SSH Keys中就可以了。验证方法就是使用命令:ssh -T git@github.com

ssh 本地验证成功

验证成功以后,能看到本地验证成功,同时可以看到Github上也显示了访问信息。

github 验证成功显示

常见的问题是,部分同学会看到 Permission denied(publickey)的提示,这个往往是由于公钥没有上传到Github导致的。如下所示:

Permission denied(publickey)

但是我遇到的情况有点特殊,我确认自己的公钥和私钥匹配,并且删除掉了Github上旧的公钥,更新成最新的公钥,但是我依然不断提示这个错误。

此时,通过查询官方资料了解到可以使用命令 ssh -vT git@github.com 进行带有参数的连接测试,如下图所示。从测试文件我们可以看出,identity file 默认找的是本地 .ssh/id_rsa 密钥,但是我在生成密钥公钥的时候,指定了文件是mdr和mdr.pub,这样会导致Github是找不到的。

ssh -vT 调试截图

然后我按照这个猜想去重新生成了默认名称的 id_rsa 和 id_rsa.pub,如下图所示。然后将id_rsa.pub上传到Github,果然一次就通过了 ssh -T 的连接。

多组RSA公钥密钥

总结:Github的ssh认证默认寻找本地路径下的id_rsa密钥,自己指定名称会导致失败。另外,我怀疑Github应该是有设置,应该可以匹配指定私钥,以后得知后再补充吧。

Github