前几天把自己的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”!