偶尔会遇到git pull 或push的时候提示 git pull remote access denied.
git@bitbucket.org: Permission denied (publickey). Could not read from remote repository.
查找解决方案时发现ssh-agent里面的密匙被莫名的原因清空了, 解决方案转自:https://www.jianshu.com/p/695facbeb26c
因为bitbucket的私有库是免费的。所以在做自己的项目的时候,就将代码托管到bitbucket上了。
今天往Bitbucket上面push代码,一直提示Permission denied(publickey)开始以为是ssh key的问题,以为是/.ssh/config文件中没有写好IndentityFile,查看了/.ssh/config文件发现没有错误。
遂google之!
结果网上都是讲ssh key没有添加或者错误。于是重新生成了一遍并添加到bitbucket中。问题还是没有解决!
最后总算在一篇博客中找到了,原址忘记了。引起错误原因是没有添加ssh key到authentication agent中。
使用ssh-add -l可以查看agent中是否有ssh key。
解决步骤大致如下:
1.确认SSH key有没有添加到帐户。
2.
/User/.ssh/config
中有没有添加IndentityFile ~/.ssh/yourkeyfile
3.使用测试命令
ssh -v yourname@bitbucket.org
,查看错误信息如果无法正常连接上,则执行第四步
4.
ssh-add -l
看是否有key添加到agent5.
ssh-add ~/.ssh/yourkeyfile
参考ssh-add详解(转载于https://my.oschina.net/itlzm/blog/1922085):
ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在
/usr/bin/ssh-add
。语法
ssh-add [-cDdLlXx] [-t life] [file ...] ssh-add -s pkcs11 ssh-add -e pkcs11
选项
-D:删除ssh-agent中的所有密钥. -d:从ssh-agent中的删除密钥 -e pkcs11:删除PKCS#11共享库pkcs1提供的钥匙。 -s pkcs11:添加PKCS#11共享库pkcs1提供的钥匙。 -L:显示ssh-agent中的公钥 -l:显示ssh-agent中的密钥 -t life:对加载的密钥设置超时时间,超时ssh-agent将自动卸载密钥 -X:对ssh-agent进行解锁 -x:对ssh-agent进行加锁
实例
1、把专用密钥添加到 ssh-agent 的高速缓存中:
ssh-add ~/.ssh/id_dsa
2、从ssh-agent中删除密钥:
ssh-add -d ~/.ssh/id_xxx.pub
3、查看ssh-agent中的密钥:
ssh-add -l