我正在尝试让远程ssh与ssh-agent一起工作,从Windows7桌面到CentOS7服务器。
我使用的是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 Terminal中运行完全相同的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?
发布于 2019-07-23 06:51:02
好的,我已经花了几个小时来处理这个问题,我想我知道发生了什么。
只有当cmd窗口与用于启动代理的cmd窗口相同时,它才能在cmd中工作。打开一个新的cmd窗口,然后ssh会得到与启动vs相同的消息-菜单中的代码-找不到代理。在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-代码在从菜单运行时应该能找到代理。但我不能测试这个。
https://stackoverflow.com/questions/57140676
复制相似问题