我在Windows 10 v21H2上使用VisualStudioCodev1.67连接到UbuntuServer22.04计算机。我正在Windows上运行一个SSH代理(v8.1)。我已经在我的Windowsconfig文件中设置了ForwardAgent yes。当我启动Ubuntu终端时,代理似乎在Ubuntu中运行,并拥有我的Windows密钥。我可以通过ssh-add -l看到它。SSH_AUTH_SOCK设置为类似于/run/user/1000/vscode-ssh-auth-sock-12345678 (指向/tmp/ssh-XXXXABCDEF/agent.1234的链接)的内容,但SSH_AGENT_PID没有设置。
如果我尝试ssh -Tvvv git@bitbucket.org,它不使用代理中的密钥,而是询问我的Ubuntu密码。在详细的SSH输出中,有以下消息:
debug2: get_agent_identities: ssh_agent_bind_hostkey: communication with agent failed
debug1: get_agent_identities: ssh_fetch_identitylist: communication with agent failed我可以启动一个新的代理并使用eval `ssh-agent`; ssh-add在我的Ubuntu机器上添加密钥。这同时设置了SSH_AUTH_SOCK和SSH_AGENT_PID。SSH_AUTH_SOCK现在有一条类似于/tmp/ssh-XXXXXXABCDEF/agent.1234的路径。现在,当我用ssh -T git@bitbucket.org进行测试时,它可以工作。我不需要输入密码。我可以通过ssh对远程进行git push之类的操作,而无需输入密码。
我更喜欢使用由VS代码转发的Windows代理密钥。这样我就不用输入密码了。我不明白为什么ssh不能访问它。在我从Ubuntu21.10升级到22.04之前,这是可行的。openssh有问题吗?它是UbuntuServer22.04上的8.9版本。我想是美国21.10号的8.4号。还是VS代码的问题?问题是VS代码在转发密钥时没有设置SSH_AGENT_PID吗?在使用代理时是否需要设置SSH_AGENT_PID?
编辑:我注意到,如果我只设置了来自ssh-agent的ssh-agent,并将SSH_AGENT_PID保持为空,然后在我的Ubuntu机器上添加键,它就能工作(ssh -T git@bitbucket.org等)。因此,在某些情况下,似乎没有必要使用SSH_AGENT_PID。问题可能是VS代码转发代理时创建的SSH_AUTH_SOCK文件有问题。
帮助感激。
发布于 2022-09-24 18:20:04
昨天,当我试图将密钥转发到VSCode中的远程服务器时,我也遇到了同样的问题。原来,默认安装太老了,与服务器的协议不兼容。
下面是我解决这个问题的方法:
PowerShellUninstallPending而不是NotPresent的东西,请重新启动winget8.9.1.0:
命令ssh-代理%USERPROFILE%/.ssh/config中添加以下行:
主机服务器ForwardAgent是AddKeysToAgent是的https://stackoverflow.com/questions/72293035
复制相似问题