问题
在码云上建了个练习项目,当在本地克隆项目的时候,悲剧出现了,码云服务器拒绝链接。
$ git clone git@gitee.com:hanchers/test.git
Cloning into 'test'...
git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
问题排查
1、确认在码云上配置了公钥
1.1 首先本地生成密钥
ssh-keygen -t rsa -C "yourName@mail.com"
1.2 将公钥配置在你的码云账号中
在c盘你的用户的文件夹下有一个.ssh目录,将里面生成的id_rsa.pub 用文本编辑器打开,全选复制。
然后在码云账号的公钥的位置,将上面的内容粘贴进去即可。
此时,按照正常情况就可以了。但是实际却没这么简单。
测试链接
配置好公钥好,在本地测试一下,看看是不是能够连接上码云了呢
$ ssh -T git@gitee.com
git@gitee.com: Permission denied (publickey).
如果要查看连接过程,执行如下命令
ssh -vT git@gitee.com
发现还是不行,为什么呢?
因为ssh链接gitee的过程中,在本地没有找到对应的私钥,导致匹配失败。
经过各种百度,终于找到了一个勉强可行的解决办法
ssh-agent bash --login -i
或
eval `ssh-agent -s`
开发ssh-agent的守护进程,然后将前面生成的私钥添加到
ssh-add ~/.ssh/id_rsa
可以通过如下命令查看是否添加成功
ssh-add -l
最后,再测试一下连接
$ ssh -T git@gitee.com
Hi hancher! You've successfully authenticated, but Gitee.com does not provide shell access.
连接成功!
克隆代码
ssh已经能够连接gitee了,下一步就是克隆代码了。
$ git clone git@gitee.com:hanchers/test.git
Cloning into 'test'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (4/4), 4.47 KiB | 4.47 MiB/s, done.
后患
前面貌似一切都很正常,问题得以解决。
但是当git命令窗口关闭后,在重新打开,就会发现,一切重归原始!!!
究其原因,还是每次ssh连接的时候,都服务找到本地的私钥,导致解析失败。
彻底解决
找到git安装目录
然后 %git-home%/etc/ssh/目录,打开文件ssh_config
IdentityFile ~/.ssh/id_rsa
可规避这个问题。
但是windows下生成的私钥不能识别的问题仍未彻底解决,尚需大神解惑。