在VS2019中使用git时如何设置ssh连接所需要的key

博客介绍了在Visual Studio 2019中使用Git进行push和pull操作时遇到的SSHKey配置问题。VS2019不支持直接配置SSHKey,但可以通过GitGUI生成SSHKey并将其公钥添加到代码托管平台。当遇到Hostkeyverificationfailed错误时,需要在命令行手动执行一次git pull以完成主机验证。解决这个问题后,即可正常进行Git操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,无论时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的形式将已知的服务器添加到列表中……算了,也没啥影响。

### 设置Git中的SSH密钥 对于在Git中配置SSH密钥的过程,当使用Windows操作系统,默认情况下Git会利用随其分发的ssh二进制文件。然而,这可能导致Git无法识别由Windows自带的服务管理器启动的`ssh-agent`服务[^1]。 为了使Git能够访问系统的OpenSSH路径并正确地与`ssh-agent`交互,在环境变量中设定`GIT_SSH`为系统OpenSSH可执行文件的位置是一个解决方案。不过,更现代的方法是在`.gitconfig`文件里通过设置`core.sshCommand`来指定使用SSH命令,这种方法自Git版本2.10起被支持[^3]。 #### 配置特定于仓库的SSH Key 如果希望针对不同的远程服务器使用不同SSH密钥,则可以在本地Git仓库目录下的`.git/config`文件内定义: ```bash [remote "origin"] url = git@github.com:user/repo.git sshCommand = ssh -i ~/.ssh/id_rsa_custom_key ``` 上述配置使得每次向名为`origin`的远端推送或拉取数据都会自动采用指定位置(`~/.ssh/id_rsa_custom_key`)的私钥进行身份验证。 #### 创建新的SSH密钥对用于GitHub(CentOS为例) 考虑到可能已经在CentOS客户端机器上存在一对SSH密钥,创建新密钥可能会覆盖旧有的密钥对。因此建议先检查现有密钥是否存在,通常位于用户的家目录下`.ssh/`子目录中[^4]。 若需生成一个新的SSH密钥对而不影响现有的任何密钥,可以运行如下命令,并按照提示操作: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 此过程允许指定保存新密钥的具体位置以及为其提供额外的安全保护措施如密码短语。 完成之后,还需要将公钥添加到目标平台(比如GitHub),以便建立信任关系,从而实现无密码克隆、提交等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值