Windows 10 ssh 代理命令:“posix_spawn:没有这样的文件或目录”

Chr*_*ris 36 ssh proxy windows-10

我使用 Windows10,我需要使用 jumphost 才能访问我的 Linux 服务器。因此,我已经.ssh\config像这样配置了我的:

Host jumphost
HostName jumphost.server.local

Host server*.server.local
ProxyCommand  ssh jumphost netcat -w 120 %h %p
Run Code Online (Sandbox Code Playgroud)

但是当我运行ssh server01.server.local -v(dash-v 表示详细)时,我收到以下错误:

OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Reading configuration data C:\\Users\\admin/.ssh/config
debug1: C:\\Users\\admin/ssh/config line 70: Applying options for server*.server.local
debug1: Executing proxy command: exec ssh jumphost netcat -w 120 server01.server.local 22
CreateProcessW failed error:2
posix_spawn: No such file or directory
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 36

根据此错误,修复方法是使用完整路径。所以这是正确的行.ssh/config

  ProxyCommand  C:\Windows\System32\OpenSSH\ssh.exe jumphost netcat -w 120 %h %p
Run Code Online (Sandbox Code Playgroud)

如需进一步开发,请参阅此问题:https : //github.com/microsoft/vscode-remote-release/issues/18

  • 谢谢谢谢 - 更新到 1809 后可能让我省了几个小时的挫败感 (8认同)

小智 29

TL; 博士

ProxyCommand应调用SSH与.exe扩展名,例如:

ProxyCommand ssh.exe -q -W %h:%p yyy
Run Code Online (Sandbox Code Playgroud)

长(?)的故事

跑步ssh -vvv XXX节目:

debug3: spawning "C:\\Windows\\System32\\OpenSSH\\ssh -q -W XXX:22 YYY"
CreateProcessW failed error:2
posix_spawn: No such file or directory
Run Code Online (Sandbox Code Playgroud)

根据CreateProcessMSDN上的文档,我想posix_spawn是以参数必须是精确和绝对路径CreateProcess的方式调用的lpApplicationName。指定.exe后缀后,似乎是固定的。

  • 这是更好的答案。 (4认同)