远程 SSH 找不到代理

Remote-SSH not finding the agent

我正在尝试让 Remote-SSH 与 ssh-agent 一起工作,从 Windows 7 桌面到 CentOs 7 服务器。

我正在为 windows 包使用 Git 中的 ssh、ssh-add 和 ssh-agent。在 cmd 提示符下,这一切工作正常,我可以 "ssh-add -l" 并看到键,我可以 运行 "ssh " 并且它 运行s 没有问题并且没有询问密码:

C:\Users\gnb>"c:\Program Files\Git\usr\bin\ssh-add.exe" -l
4096 SHA256:zg2IR6OlPwCGP8SzcbriXIQjth5zuDc9rbO6uaNPmcU gnb@VDI028-MEL (RSA)

C:\Users\gnb>ssh vdi ls
Desktop
tsclient
wkspace

C:\Users\gnb>

在 VS-Code 中,我无法让它工作。 运行 VS-Code 终端中完全相同的 ssh-add 命令似乎找不到代理:

C:\Users\gnb>"c:\Program Files\Git\usr\bin\ssh-add.exe" -l
Could not open a connection to your authentication agent.

VS-Code 中的实际远程功能或多或少可以使用,但总是停下来询问密码。

这里缺少什么?为什么vs-code环境连接不上ssh-agent?

好的,我又花了几个小时来研究这个,我想我明白发生了什么。

如果它与用于启动代理的 cmd window 相同,则它仅适用于 cmd。打开一个新的 cmd window 然后 ssh 得到与从菜单开始 vs-code 相同的消息 - 找不到代理。似乎 Win7 上 git/ssh 附带的 start-ssh-agent 脚本正在设置一些环境变量或一些 ssh 客户端需要的环境变量。这确实有道理,Unix ssh-agent 的行为方式相同,但我显然不习惯用这些术语来考虑 windows 应用程序。

start-ssg-agent 脚本似乎也会将环境变量设置为指向现有代理,如果一个是 运行ning,否则将创建一个新代理。所以一个 2 行批处理文件

start-ssh-agent
code

将使用 ssh-agent 可靠地启动 VS Code。如果您在 ssh 配置中命名身份文件,vs-code 将在需要时将它们的密钥添加到代理。否则您需要手动将密钥添加到代理,或者退回到一直输入密码。

怀疑更好的解决方案是在 Win10 上并使用 ssh-agent 作为服务,这应该意味着 VS-code 应该在 运行 从菜单中找到代理。但我无法测试它。