windows 10 ssh proxycommand: "posix_spawn: No such file or directory"
I use Windows10 and I need to use a jumphost to get to my Linux servers. Thus I have configured my .ssh\config
like so:
Host jumphost
HostName jumphost.server.local
Host server*.server.local
ProxyCommand ssh jumphost netcat -w 120 %h %p
But when I run ssh server01.server.local -v
(dash-v for verbose) I get the following error:
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
As per this bug, the fix is to use a full path. So this is the correct line in the .ssh/config
:
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe jumphost netcat -w 120 %h %p
For further development see this issue: https://github.com/microsoft/vscode-remote-release/issues/18
TL;DR
The ProxyCommand
should invoke ssh with .exe
extension, for example:
ProxyCommand ssh.exe -q -W %h:%p yyy
The long(?) story
Running ssh -vvv XXX
shows:
debug3: spawning "C:\\Windows\\System32\\OpenSSH\\ssh -q -W XXX:22 YYY"
CreateProcessW failed error:2
posix_spawn: No such file or directory
According to CreateProcess
document on MSDN, I guess posix_spawn
is calling CreateProcess
in a way that lpApplicationName
argument must be exact and absolute path. After specifying the .exe
suffix, it seems to be fixed.
I got same error but it was because of DISPLAY environment variable set to some value. Once you unset that environment variable, the error went away.
This issue has to do with a bug in the OpenSSH Windows implementaiton. This bug is fixed with release 8.1.0.0. Detailed instructions on how to patch the version can be found here