在Windows 10上使用Pageant与VSCode

16
我正在尝试在我的机器上(Win10)配置VSCode以使用已加载在Pageant上的密钥通过SSH连接到我的远程服务器。
我找到的一种方法是使用"wsl-ssh-pageant",但即使我在我的机器上启用了WSL(Ubuntu),我也无法弄清楚如何安装它。
有人能帮助我配置在VSCode中使用pageant吗?请解释如何安装"wsl-ssh-pageant"。
谢谢

1
这个 Github 问题解释了一切。我使用帖子 #2 和 #4 中解释的信息来完成它。https://github.com/microsoft/vscode-remote-release/issues/61 - fred
3个回答

13
如果Pageant已经加载了密钥,那么您可以通过Plink(PuTTY Link)命令行界面让另一个应用程序使用它。
如果您想在远程服务器上使用具有凭据(密钥)的Git存储库,则我已经找到了解决方法: https://www.cgranade.com/blog/2016/06/06/ssh-keys-in-vscode.html(已加载密钥到Pageant,唯一缺少的部分是最后一步4)。
您需要在Win10中设置一个新的环境变量。 对我而言,当我添加“系统变量”而不是“用户变量”时它有效。
变量的名称是: "GIT_SSH"
值是PuTTY \ plink.exe的完整路径,例如: "C:\ Program Files(x86)\ PuTTY \ plink.exe"
如果您已经打开了VS Code,请关闭它并重新打开以确保它看到新的环境变量。
更新(2021年11月10日): 现在在我的情况下,VSCode还需要在此解决方案中描述的内容: VS Code / Bitbucket / SSH - Permission denied (publickey)

如果有其他人遇到使用Plink作为其钩子的VSCode或其他应用程序,并且遇到了无错误的挂起问题。请从命令行中运行一次Plink,并接受主机指纹,然后一切应该正常工作。我已经尝试了所有方法,一直很沮丧,直到我在命令行上尝试并看到了那个错误。 - undefined

11
自从Putty版本0.77以后,你不再需要使用"wsl-ssh-pageant"或者PLINK了。 这使得在vscode中使用pageant作为ssh-agent来进行git操作变得更加简单。 <= Windows 10: 请按照完整的说明进行操作。 >= Windows 11: 只需忽略设置环境变量GIT_SSH即可。
前提条件:
Putty / Pageant >= 版本0.77,并使用新的命令pageant.exe --openssh-config %USERPROFILE%\.ssh\pageant.conf启动。它会生成一个文件,如果该文件包含在.ssh\config中,它会将ssh指向pageant。请注意:生成的文件与正在运行的pageant.exe实例绑定,并且每次启动时都会更改!最简单的方法是将其包含在自动启动中,您还可以添加私钥。 在git中加载正确的OpenSSH公钥。(Putty格式的公钥.ppk不起作用!
pageant中加载相应的OpenSSH私钥。
创建文件"%USERPROFILE%\.ssh\config"并添加以下行include "pageant.conf"。它将加载由pageant生成的文件以指向pageant。 Win11中不适用!对于vscode,环境变量GIT_SSH必须指向Windows的ssh可执行文件,通常位于C:\Windows\System32\OpenSSH\ssh.exe。要在受管理员限制的系统上永久设置此项,请在Powershell中执行。
[Environment]::SetEnvironmentVariable("GIT_SSH", "$((Get-Command ssh).Source)", [System.EnvironmentVariableTarget]::User)

它将添加一个永久的用户特定环境变量,可以被vscode使用(在注册表中查看Computer\HKEY_CURRENT_USER\Environment\GIT_SSH)。
现在测试命令行中的git访问,以查看ssh访问您的git仓库是否正常工作。
打开一个新的cmd提示符。如果以下命令类似,则一切都会很好:
C:\Users\<myuser>> ssh -T git@<your-git-url-goes-here>
Welcome to GitLab, @<your username in git>!

如果它像这样工作,你可以开始在vscode中尝试使用git。但别忘了重新启动vscode。

1
在 Putty 0.77+ 中没有名为 pagent 的新命令,它仍然被称为 pageant,这些说明适用于 Windows 11。 - taur
你说得完全正确,我已经进行了编辑。 谢谢你的提示。我还没有意识到这个问题... - D. Lohrsträter

0
我用这个帖子作为解决我的问题的入口,尽管它已经有点老了。
可以使用Windows 11中集成的OpenSSH代理,如本文所述 - 不再需要适配PuTTY。
重要的是安装Git for Windows时不使用其包含的SSH实现,而是使用外部实现(在Windows的PATH中可用)。我安装了更新的Git版本来实现这一点,并在安装程序中进行了相应的选择。
请注意,这个解决方案不仅适用于VS Code - 你只需要让gitssh-agent之间的交互工作,VS Code会自动使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接