Windwos10で~/.ssh/config
のProxyCommand
を使って多段SSHの設定ができたので共有する。
作業環境
Windows10ではOpenSSHをインストールしてSSHコマンドが実行できるよう設定しています。 ローカル(Windows10)から踏み台(step-host)を経由して、目的のホスト(target-host)への接続を設定します。
また、step-hostとtarget-hostには公開鍵を登録してます。 登録方法→ssh公開鍵認証設定まとめ - Qiita
多段SSHの設定
~/.ssh/config
に以下の設定をします。
#踏み台
Host step-host
HostName {step-hostのHostNmae}
User hoge
Port 22
IdentityFile ~/.ssh/id_rsa
#踏み台から接続するホスト
Host target-host
HostName {target-hostのHostNmae}
User hoge
Port 22
IdentityFile ~/.ssh/id_rsa
# Windows10のOpenSSH 7.xの場合
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -l %r -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null {step-hostのHostNmae} -W %h:%p
# MacやLinuxの場合
# ProxyCommand ssh -l %r -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null {step-hostのHostNmae} -W %h:%p
OpenSSH 8.0より前の場合、sshの絶対パスを指定する必要があります。環境に合わせて修正してください。
これでWindows10から多段SSHできるようになりました!
> ssh target-host
ProxyCommand ssh ○○としたときのエラー
Windows10でMac等のようにProxyCommand ssh ○○
と設定していると以下のエラー出る。
>ssh user_name@target-host
CreateProcessW failed error:2
posix_spawn: No such file or directory
WindowsではProxyCommandには絶対パスでコマンドを指定する必要がある。
補足:OpenSSHのバグ
この問題はOpenSSHのバグでした。(OpenSSH 8.0以降では修正されているようです)
https://github.com/PowerShell/Win32-OpenSSH/issues/1172
こちらのコメントに手動で修正する方法が紹介されています。
https://github.com/microsoft/vscode-remote-release/issues/18#issuecomment-507258777