前几天把自己的Ubuntu系统升级了一下,结果Git连不上GitHub了,其中各种心酸啊,主要是误信了官方文档关于测试SSH连接成功那部分的提示,不多说直接上干货!


1、本地配置Git用户名和邮箱名

$ git config --global user.email "[email protected]"
$ git config --global user.name "xxx"

2、生成SSH RSA key

$ ssh-keygen -t ras -C "[email protected]"

3、将public key复制粘贴到GitHub中

settings --> SSH and GPG keys --> New SSH key

4、测试客户端与GitHub的连接,重点来了!

$ ssh -vT [email protected]

    最后一行输出:

Error: Permission denied (publickey)

    竟然被拒了!!!然后我尝试使用debug模式连接测试,似乎是找不到对应的id_rsa key!

$ ssh -vvv [email protected]

5、然后我查找了Git的官方文档,他们提供了以下命令修改

$ ssh-add bash
$ ssh-add -l
$ ssh-add ~/.ssh/id_rsa
$ ssh-add -l -E md5

    上面几个命令的意思是我们ssh测试连接时找不到id_rsa.pub公钥,所以要通过“ssh-add ~/.ssh/id_rsa”命令给它指明位置,我之前系统升级估计导致这个配置被刷掉了,所有我又重新添加上去了,这时我信心满满的以为问题已经解决了!骚年,你太天真了!还是“Permission denied”。

    然后我继续查找原因,上Google看人家老外是怎么解决的,顺便把老外遇到问题的解决命令我贴一下,虽然对于我的问题然并卵!

# 目录和文件权限不对也会导致SSH连接不上哦!

chmod 755 /home
chmod 700 .ssh
chmod 600 .ssh/*

# 检查ssh_config和sshd_config配置

IdentityFile ~/.ssh/id_rsa
PubkeyAuthentication yes

    最后我无意中在一个网站上看到有一个人说,某些Linux kernel版本上的SSH连接测试会有问题,这句话瞬间点醒了我,会不会我已经可以连接了,但是就是由于这个bug导致我一直显示连接被拒呢!我在GitHub上新建了一个测试仓库,然后在本地克隆它,然后成功了!我又在这个仓库中添加了一些测试文件也成功上传到了GitHub上,这时我心里只有一句话“mmb”!


附上官网文章:https://help.github.com/articles/error-permission-denied-publickey/