首先,无论时git-hub,git-lab乃至gitee,我们在pull和push的时候都是需要验证的,要么是https的账号密码验证,要么就是通过ssh的key验证,账号密码很容易理解,会自动的弹出一个窗口我们就可以输入账号密码了。可是只要用过vs2019的朋友们都会发现,在vs2019中根本就不存在为仓库配置ssh的key的方法,直接使用git@xxxx开头的连接去push或pull都是失败的。
这是因为vs2019使用了最原始的git的验证方法,就是将key放在一个固定的目录下,由git程序自行读取的方案。也就是说,VS2019根本就不关心配置的问题,也根本不需要配置。只要通过原始的git命令可以使用,那么VS2019中也就可以使用。
那么,在这种情况下,我们怎么生成key,又要如何去找到这个key呢?
答案就是打开Git GUI,然后在Help菜单中找到Show SHH Key:
如果你从来没有生成过SSH Key,那么你会看到空白的窗口,右上角的Generate Key按钮是可用的,点一下就可以生成SSH Key。如果你已经生成了SSH Key,那么你就会看到已经生成的SSH Key(当然显示的是public key,private key并不会显示)。
这个就是git-hub,git-lab,gitee中需要上传的公钥啦,将这个信息复制,然后在网站相应的界面上添加上即可。
不过,接下来才是重点,因为哪怕经过了以上操作,有大概率还是会发生失败的!
你可能会在VS2019的源代码管理 - Git的控制台输出中看到这个错误:
Git failed with a fatal error.
Git failed with a fatal error.
failed to acquire credentials.
Host key verification failed.
Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
注意这个Host Key verification failed.
当你第一次尝试通过ssh连接服务器的时候,是需要手动的确认的,可是vs2019并不会帮你验证……这就是错误的来源。
解决方案是在命令行界面手动的pull一次,让系统提示手动确认:
注意,这里调用git pull
命令后,就需要手动的敲入yes
三个字母回车来确认自己真的要连接到服务器。
之后,就一切正常啦!
不过不知道为什么,这里还是会以IP的形式将已知的服务器添加到列表中……算了,也没啥影响。