0

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

我正在使用 Git for windows 包中的 ssh、ssh-add 和 ssh-agent。在 cmd 提示符下,一切正常,我可以“ssh-add -l”并查看密钥,并且可以运行“ssh”,它运行没有问题,无需输入密码:

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?

4

1 回答 1

0

好的,我又玩了几个小时,我想我明白发生了什么。

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

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

start-ssh-agent
code

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

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

于 2019-07-22T22:51:01.957 回答