新电脑设置git-ssh
换了家里的电脑登陆git始终遇到ssh登陆错误,使用密钥登陆不能正常通过,又不想申请新的密钥(虽然最后是这么办的,之前的密钥需要密码确认,嫌麻烦,这次就取消密码了),花了不少时间,走了冤枉路,所以每次的坑都会记录下来,我才是不是那个经常踩坑的人呢~~
提出问题:如何在新电脑添加已存在的密钥并且让git使用它正常连接到github
1.添加已有的id_sra到ssh-agent
使用github给开源项目添加ssh后需要在本地将私钥添加到ssh-agent,通常网上给出的方法是在git bash界面中输入:
ssh-add 私匙文件路径
然而,在windows下通常会报错:
Could not open a connection to your authentication agent
解决方法:
打开git Bash
命令行,依次执行
1.exec ssh-agent bash
2.eval ssh-agent -s
3.ssh-add "XXX\.ssh\id_rsa_github"
**引号中的路径就是你私钥文件的路径
但是,在Windows下,ssh-agent
进程将继续运行,直到您注销、关闭计算机或终止该进程。 重启Windows后,如果按照第一步中的方法进行设置,可能每次打开Git Bash,需要手动添加私钥到ssh-agent
。所以为了使我们每一次打开Git Bash时自动启动ssh-agent
,进行如下设置:
找到Git的安装目录,再在安装目录下找到etc
文件夹,进入etc
,打开bash.bashrc
文件,在文件末尾添加
# ssh-add private-key
eval "$(ssh-agent -s)"
ssh-add C:/Users/XXXXX/.ssh/id_sra_XXXXXXX
ssh-add ~/.ssh/私钥2
其中私钥1、私钥2换成自己私钥的名称即可。保存文件并退出,这样每次打开Git Bash就会自动执行ssh-agent代理。
2.让git使用新添加的密钥
网上教程到这里一般就没了,我操作后还是没法成功,后续需要让SSH服务器对每一组密钥对进行指定,也很简单,在.ssh
文件夹里面添加说明:
vim ~/.ssh/config
复制以下内容,在Vim里按下小写字母p,然后再按下Esc键,输入:wq
即可保存并退出。
Host github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile C:/Users/XXXXX/.ssh/id_sra_XXXXXXX
Host adoredee.github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_hugo_githu
解释:
- Host:Git识别名,是一个别名,如果使用Github上传下载代码,正常情况下是github.com,如果是多个Github账号,则需要起一个别名,建议命名规则为项目名/账户名.git服务器,比如adoredee.github.com第二个Host,第一个Host为正常命名:github.com;
- HostName:服务器地址,Github地址为github.com、GitLab地址为gitlab.com、Gitee地址为gitee.com;
- IdentityFile: 公钥文件所在的绝对路径;
验证SSH密钥,注意@后面是在
~/.ssh/config
文件中指定的"Host"
项
先验证第一个Host:github.com,运行
ssh -T [email protected]
显示
Hi adoredee! You've successfully authenticated, but GitHub does not provide shell access.
#git.bash里面操作都行
#cd d:\OneDrive\git\MyBlog
#git config --global user.name "biozhangjn"
#git config --global user.email "[email protected]"
#清除之前的SSH设置,4需要管理员权限
#git config --global -l
#git config --system -l
#git config --global --unset credential.helper
#git config --system --unset credential.helper
最后,重新在VScode
里面进行相关操作,就可以正常的进行各项同步了,总结,添加旧的密钥并且让git知道用哪一个,over。
不过最后实验室电脑的VScode
插件还是不能正常使用,应该哪里设置错误,不过deploy.sh
可以正常工作,那也足够应付Blog
更新了啦啦啦