キーを使用した SSH インライン プロキシ ジャンプが機能しない

キーを使用した SSH インライン プロキシ ジャンプが機能しない

プロキシ ジャンプ経由でリモート サーバーへの接続を確立する必要があります。そのために -J フラグを使用しようとしています。構文は次のようになると理解しています。

ssh -J A B

しかし、両方の接続にキー ファイルを使用する必要があります。そこで、次のことを試しました。

ssh -J -i /path/proxy.pem user@proxy_host -i /path/target.pem user@target_host

明らかにうまくいっていない、私は

option requires an argument -- i
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
           [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]
ssh_exchange_identification: Connection closed by remote host

この場合、ssh 設定を編集せずに正しいインライン構文は何ですか? この場合、キーがどのサーバーに保存されているかは違いはありません。

答え1

構文は次のようになると理解しています:

ssh -J A B

はい、しかし、それがすべてではありません。 は-Jスタンドアロン フラグではありません。つまり、あなたがしようとしているように、同じコマンド ラインで 2 つの独立した接続オプション セットを単純に指定することはできません。

代わりに、-Jフラグは中間ホストの名前を取得しますパラメータとして-i <keyfile>いつも一緒に行くのと同じように、-J <proxy>一緒にいなければなりません。

このオプションを使用しても、全体的な「ssh」構文は変わりません。どのオプションがホストAに属し、どのオプションがホストBに属するかはグループ化されません。このように2つの「-i」オプションがある場合、SSHは単に両方2 つの接続のそれぞれを行うときにキーを押します。

ただし、後半部分は問題にならないはずです。各サーバーはキーを受け入れないことを示し、SSH は別のキーを試すだけです。したがって、次のコードは機能するはずです。

ssh -J user@proxy_host -i /path/proxy.pem -i /path/target.pem user@target_host
    └────────────────┘ └────────────────┘ └─────────────────┘

しかし、ホストの 1 つが複数のキーが試行されることを好まない場合は、-J を長い形式の ProxyCommand に変換する必要があります。

ssh -o ProxyCommand="ssh -i /path/proxy.pem -W %h:%p user@proxy_host" -i /path/target.pem user@target_host

関連情報