web-dev-qa-db-ja.com

windows 10 ssh proxycommand: "posix_spawn:No such file or directory"

私はWindows10を使用していますが、Linuxサーバーにアクセスするにはジャンプホストを使用する必要があります。したがって、私は.ssh\configを次のように構成しました:

Host jumphost
HostName jumphost.server.local

Host server*.server.local
ProxyCommand  ssh jumphost netcat -w 120 %h %p

しかし、ssh server01.server.local -v(詳細はダッシュ-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
16
Chris

このバグ のとおり、修正はフルパスを使用することです。したがって、これは.ssh/configの正しい行です。

  ProxyCommand  C:\Windows\System32\OpenSSH\ssh.exe jumphost netcat -w 120 %h %p

今後の開発については、この問題を参照してください: https://github.com/Microsoft/vscode-remote-release/issues/18

14
Chris

TL; DR

ProxyCommand ssh.exe -q -W %h:%p yyy

長い(?)物語

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

MSDNのCreateProcessドキュメントによると、CreateProcess引数が正確で絶対パスでなければならないようにposix_spawnlpApplicationNameを呼び出していると思います。 .exeサフィックスを指定した後、修正されたようです。

7
Ben

同じエラーが発生しましたが、それはDISPLAY環境変数が何らかの値に設定されているためでした。その環境変数の設定を解除すると、エラーはなくなりました。

1
Shital Shah

Netcatはデフォルトのシステムでは使用できないため、.ssh/config内の次の2つのエントリでうまくいきます(ローカルのユーザー名とリモートのユーザー名が異なると想定)。

login.bar:ログインするシステム
jump.bar:ジャンプホスト
<username>:login.barおよびjump.barのリモートユーザー名(これらが異なる場合は、<jumpuser> @ jump.barが必要です)。 jump.barの前にある<username> @を省略すると、ローカルのユーザー名が使用されます。

a)

Host foo
User <username>
HostName login.bar
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -X -W %h:%p <username>@jump.bar

b)

Host foo
User <username>
HostName login.bar
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -Y <username>@jump.bar -W %h:%p 

どちらの場合も、ssh fooを使用してlogin.barにログインします。

0