前几天把自己的Ubuntu系统升级了一下,结果Git连不上GitHub了,其中各种心酸啊,主要是误信了官方文档关于测试SSH连接成功那部分的提示,不多说直接上干货!
1、本地配置Git用户名和邮箱名
1
2
|
$ git config
-
-
global
user.email
"xxx@qq.com"
$ git config
-
-
global
user.name
"xxx"
|
2、生成SSH RSA key
1
|
$ ssh
-
keygen
-
t ras
-
C
"xxx@qq.com"
|
3、将public key复制粘贴到GitHub中
1
|
settings
-
-
> SSH
and
GPG keys
-
-
> New SSH key
|
4、测试客户端与GitHub的连接,重点来了!
1
|
$ ssh
-
vT git@github.com
|
最后一行输出:
1
|
Error: Permission denied (publickey)
|
竟然被拒了!!!然后我尝试使用debug模式连接测试,似乎是找不到对应的id_rsa key!
1
|
$ ssh
-
vvv git@githup.com
|
5、然后我查找了Git的官方文档,他们提供了以下命令修改
1
2
3
4
|
$ 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看人家老外是怎么解决的,顺便把老外遇到问题的解决命令我贴一下,虽然对于我的问题然并卵!
1
2
3
4
5
6
7
8
9
10
|
# 目录和文件权限不对也会导致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/