私は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
このバグ のとおり、修正はフルパスを使用することです。したがって、これは.ssh/config
の正しい行です。
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe jumphost netcat -w 120 %h %p
今後の開発については、この問題を参照してください: https://github.com/Microsoft/vscode-remote-release/issues/18
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_spawn
がlpApplicationName
を呼び出していると思います。 .exe
サフィックスを指定した後、修正されたようです。
同じエラーが発生しましたが、それはDISPLAY環境変数が何らかの値に設定されているためでした。その環境変数の設定を解除すると、エラーはなくなりました。
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にログインします。