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