文章目录
1、遇到问题
1、现象1
在我们的程序中进行下载的话,会出现permission denie(publickey),其实这个地方已经说明了问题,就是我们的公匙不对。
2、现象2
在本地进行git clone的时候,通过小乌龟同样也会报这个错。
3、现象3
我们尝试用ssh的方式连接一下github.com看一下,可以看到连接失败了,同样是permission denie(publickey) 的问题。
2、问题分析
permission denie(publickey) 翻译过来就是公匙不对导致不能下载,我们知道通过ssh的方式去下载的话,是需要持有私匙和公匙,才能正常下载。
这个地方提示的就是ssh key缺失的问题,那么有的小伙伴可能疑惑说,我明明配置了,为什么不能使用,其实我刚开始也是这么想的,但是忽略了一个问题,我要下载的包在github,而项目是存放在gitlab上的,这两个是不通用的。
3、解决方案(针对github)
1、生成是ssh key
在我们的 Git Bash here 打开的控制台上面进行命令操作:
- 先输入ssh-keygen -t rsa -C "你的github账号"
- 然后选择保存key的位置,基本就是默认C:/Users/admin/.ssh 目录下面的id_rsa文件(如果已经存在这个文件的话,可以选择其他位置)
- 输入你的passphrase,这个应该可以理解为密码,正常我这边是直接回车,就是没有密码
- 重新确认一下passphrase
- 然后会生成你的rsa文件。
2、复制ssh key
正常在你的C:User/admin/.ssh/ 目录下面会生成一个id_rsa_pub 的文件,用nodepad++或者文本工具将它打开,复制里面的字符串内容
3、登录github
如果没有账号可以去注册一下,不知道github和gitlab是不是通用的,没试过。
4、new ssh key
点击头像,选中Settings
选择SSH and GPG key
选择new ssh key
把我们刚才复制的id_rsa_pub中的字符串粘贴到key对应的框中
4、gitlab的解决方法
参考我的另一个文章:Go unkown reversion问题解决
5、注意的点
1、替换https为ssh
这个没有尝试过没替换行不行,但是如果上面的步骤操作下来不成功的话,可以试一下。
git在下载的时候使用的是http的方式而不是ssh的方式,所以这边会把前缀做一个替换。
打开我们的C:\Users\admin.gitconfig文件做一个全局参数的编辑,加入下面的内容:
[url "[email protected]:"]
insteadOf = https://github.com/
在控制台也可以修改,可以参考我之前的git相关的文章说明
2、不同账号使用一个ssh key
github和gitlab正常来说是两个不同的平台,我在github上面填写ssh key之后,本地之前的gitlab上对应的ssh key 不能使用了,感觉也是有点奇怪的说
然后其实就是说保持github 和gitlab 上填写的ssh key 一致就行了,就能够保证两个平台都可以访问