
設定は次のとおりです。
- ローカルPCそこから ssh で接続したいのですが…
- ゲートウェイノード
gateway
これは、SSH で接続するためだけに使われる中間ノードです。 - フロントノード
front
、再び中間ノード、最終ノードに ssh で接続するために必要なもの… - 計算ノード実際に使いたいノードは
直接入力できるようにローカルの SSH 構成を設定したいと思いますssh compute
。
問題:gateway
およびとは対照的にfront
、コンピューティング ノードのホスト名は静的ではありません (つまり、1 日に複数回変更される可能性があります)。コンピューティング ノードの名前 (つまり ) を出力する のcompute_node_hostname.sh
スクリプトがあります。これを構成でどのように使用すればよいでしょうか?front
node339
コンピューティング ノードがハードコードされた次の単純な構成は機能します。
Host gateway front compute
User …
IdentityFile ~/.ssh/id_rsa
Host front
HostName front
ProxyJump gateway
Host compute
HostName node339
ProxyJump front
制約:RemoteCommand
私の設定では使えない
答え1
「ProxyJump」は「ProxyCommand」のよりスマートなバージョンであることを思い出してください。CLI で指定されたオプションをコピーする追加作業を行いますが、基本的には次のものと同じです。
Host compute
ProxyCommand ssh -W %h:%p front
ここで%h
、および は、%p
要求されたホスト名とポートに自動的に展開されます。
したがって、動的ホスト名を使用するには、%h
パラメータを置き換えます。
Host compute
ProxyCommand ssh -W $(compute_node_hostname.sh):%p front
注意: これは、異なるホストキーを持つノードではうまく動作しません。リモート ネットワーク上に既に存在する別のホストを介して接続しているため、このホップのホストキー検証を無効にするだけで安全です。