1 写在前面的

最近刚刚部署好了到生产环境就产生了一些问题。因为上班的时候这些Git的初期操作基本都是按照公司给的设置步骤来,自己从零开始肯定会踩到不少坑。所以现在来记录一下主要遇到的坑和解决办法。

2 出现的错误问题 git clone 成功 git push 失败

我们这里开发者一般的步骤就是自己电脑上本地开发,本地开发之后上传到代码管理网站,然后部署到时候 git clone 一份下来直接部署,代码部署的时候可能有跟我一样的新手在代码的上面改了一些配置文件到一些地方,这个时候改完也在 git status 上发现了修改记录,成功git add,git commit之后,却发现……

在 git push 的时候却出现了这种错误▼

1
2
3
Permission denied (publickey).  
fatal: Could not read from remote repository.
Please make sure you have the correct access rights

肯定很多人心里有跟我一样的疑问明明我都已经 git clone 成功了怎么还会有权限问题?

然后debug一下

1
$ ssh -T git@github.com  

发现还是
Permission denied (publickey).

已经抓狂了有没有 怎么全是 Permission denied (publickey).

然后在使用 -vT 来详细看下到底哪里出错了

1
$ ssh -vT git@github.com  

发现出来了一堆信息 然后定位到最后可以发现是key的路径

1
2
3
4
5
6
 ...  
debug1: Trying private key: /path/username/.ssh/id_rsa
debug1: Trying private key: /path/username/.ssh/id_dsa
debug1: Trying private key: /path/username/.ssh/id_ecdsa
debug1: Trying private key: /path/username/.ssh/id_ed25519
debug1: No more authentication methods to try.

好了 基本可以定位到应该是github没有成功配对好密钥对!!向下看▼▼▼▼▼▼

3 解决方法

3-1 linux上控制和保存钥匙的工具

1
$ ssh-agent  -s  

3-2 专用密钥添加到ssh-agent的高速缓存

1
2
3
$ ssh-add ~/.ssh/你的密钥,不带pub的那个,注意路径和密钥名字!!!  
# 例子
$ ssh-add ~/.ssh/github_id_rsa

如果出现了这个错误
Could not open a connection to your authentication agent
就使用一下

1
$ ssh-agent bash  

3-3 测试一下

1
$ ssh -T git@github.com  

出现以下结果就是成功了
Hi NAME! You’ve successfully authenticated, but GitHub does not provide shell access.

4 【总结】嫌太长不想看想直接解决问题的请点这里

  • 主要错误
1
Permission denied (publickey).  
  • 可能原因

密钥也就是rsa没配对好

  • 解决办法
1
2
3
$ ssh-agent  -s                                   # 步骤1  
$ ssh-add ~/.ssh/github_id_rsa(不带pub的你的密匙名)# 步骤2
$ ssh -T git@github.com # 测试一下是否成功