一 删除ssh-agent密钥,加深ssh的理解,方便以后处理bug
我先复现一下BUG,也可以加深对ssh的理解
- 在C:\Users\Admin\.ssh文件夹下打开git bash(建议全程使用这个终端不用windows终端管理员)
- 然后查看ssh代理中所有已经添加的密钥 ssh-add -l
发现会报错Could not open a connection to your authentic,这是因为没有打开ssh-agent
- eval `ssh-agent -s` 打开ssh-agent
- ssh-add -l
- ssh-add -L
列出agent中的密钥,现在我准备删除所有agent中的密钥和密钥文件 ,如果提示没有identities说明以前没添加成功
- ssh-add -D
删除成功
删除文件
删除之后再clone gitee服务器发现失败,进入下一步
二 重新上传ssh公钥,复现BUG
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
我这里有个很奇怪的BUG,默认的密钥地址不是C:\Users\Admin\.ssh,
如果你们也不是,要修改到这里:
一路回车生成了密钥:
直接用记事本打开这个.pub把所有内容复制到gitee对应区域,标题自动生成后面的邮箱
这里做好了准备工作,请按下图输入命令。
三.几乎列举了ssh clone gitee的所有BUG,终端运行下图这些指令(这里是这篇文章的关键部分,解释了sshBUG):
指令解释:
- 在终端访问gitee,出现了denied,说明还未将密钥添加到自己的ssh-agent中,因为到目前只是生成了密钥文件。
- 添加密钥文件发现失败,是因为ssh-agent还未启动
- 启动agent
- 然后访问gitee,发现确实一定要将密钥添加到agent
- 这时再添加到agent出现identity added
- 再访问gitee,发现成功,尝试clone仓库,发现成功
上面是两个好理解的BUG,下面才是大BUG
然后访问gitee,出现了访问成功,我上面说过我有个奇怪的BUG,ssh默认生成的密钥文件不是在C:\Users\Admin\.ssh,如果你们也不是然后按照网上的一路回车生成密钥,就会导致混乱,我以前不知道生成的密钥要丢到agent里面,然后我把密钥文件删除后,发现自己的git还能和gitee通信,感觉非常奇怪,想要弄懂ssh和gitee,就把之前建立好的删除重构,发现原来gitee是和agent里面的通信,弄好后将密钥文件删除也能git。
总结:主要是ssh有个agent,一定保证这个agent里面的密钥能和gitee对应