ssh proxyjump コマンドを設定ファイルへ

ssh proxyjump コマンドを設定ファイルへ

proxyjump 経由で中間ノードを使用してリモート ノードにログインするには、ssh コマンドを使用します。リモート ノードと中間ノードは Linux サーバーで、クライアントは Macbook です。このコマンドは機能し、次のようになります。

ssh -i .ssh/id_file -J user1@jump_node -A -D remote_port user2@remote_node

ここで、jump_node と remote_node を中間ノードとリモートノードのホスト名に置き換え、remote_port を remote_node の sshd ポートに置き換えます。

私の最初のそして主な質問は、このコマンドを構成セクションに組み込む方法です。-D.ssh/config ファイルに記述できるものはありますか? ssh のマニュアル ページを確認しましたが、およびフラグ ( のフラグだ-Aと思います)に対応する設定オプションがわかりません。これらのフラグと、このコマンドから正しい設定セクションを作成する方法について説明していただけませんか?ForwardAgent yes-A


私のもう一つの質問はそれほど重要ではありませんが、ここで何が起こっているのか理解するのに役立ちます。この 2 番目の質問は、少し異なるコマンドを発行したときに表示されるエラーに関するものです。

私がオンラインで読んだほとんどのドキュメントでは、次のようなコマンドの使用が推奨されています。

ssh -i .ssh/id_file -J user1@jump_node user2@remote_node:remote_port

しかし、このコマンド (フラグありとフラグなしの両方-A) を実行すると、次のエラーが発生します。

channel 0: open failed: connect failed: Name or service not known
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

このエラーの意味がわかりません。何かヒントがあれば教えてください。

答え1

見るman 5 ssh_config:

ForwardAgent yes
IdentityFile .ssh/id_file

Host jump_node
    User user1

Host remote_node
   ProxyJump jump_node
   User user2

そしてただ実行するだけですssh remote_node

ProxyJumpにも (another) を指定すると、この方法でチェーンを構築することもできますjump_node


2 番目の問題は、ssh user2@remote_node:remote_portの構文が正しくないことです。エラー メッセージには と表示されますが、これはホスト名 (コロンが埋め込まれている) としてName or service not known解決しようとして失敗したためであり、予想どおりではありません。 なしで同じことを実行すると、エラー メッセージが少し明確になります。remote_node:remote_portremote_node-J

これは、SSH サーバーがリモート ノードでリッスンしているポートを指定する試みであると解釈します。そのためには、-pコマンド ライン パラメーターまたはPort構成ファイルのホスト エントリ オプションを使用します。

また、これはコマンドラインスイッチとは何の共通点もありません-D。また、その引数は「リモートポート」ではありません。むしろ、そのスイッチはまったく異なることを行います。つまり、SSHクライアントに聞く指定されたポートローカルマシン上SOCKS 接続を受け入れ、リモートが出口ノードとして使用されるようにします。たとえば、ローカル ブラウザーで設定すると、SSH トンネルを介してインターネットにアクセスし、第三者 (Web サーバー) は接続がリモート ホストの IP からのものだと認識します。SSH サーバー (この場合、ジャンプ サーバーのアドレスは認識されます) を除いて、誰も「実際の」IP を見ることはできません。設定するには、これ設定では、DynamicForward設定ファイル内のオプションを使用します。

関連情報