プロキシ ジャンプ経由でリモート サーバーへの接続を確立する必要があります。そのために -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