SSH設定:ProxyCommandを置き換えますか?

SSH設定:ProxyCommandを置き換えますか?

私の助けを借りProxyCommandて使いやすいようにSSHお気に入りを設定しました。

host some_server
    hostname some_server
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ProxyCommand ssh frontserver1 -W %h:%p

host frontserver1
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa

今日はfrontserver1ダウンタイムが多いですが、またはfrontserver2経由で接続することもできますfrontserver3。しかし、すべてをリセットする必要がありますsome_server_via_front2。その結果、アクセスする各イントラネットサーバーに対してn個のエントリが作成されます。ここで、n はフロントエンドサーバーの数です。

より簡単な方法がありますか?

選択肢を設定できますかProxyCommand

次のようになります。ProxyCommand ssh frontserver1 -W %h:%p接続できない場合は続行ProxyCommand ssh frontserver2 -W %h:%pしてくださいfrontserver3

答え1

ssh_configマニュアルに記載されている内容を考慮すると、次のようになります。

 ProxyCommand
         Specifies the command to use to connect to the server.  The com-
         mand string extends to the end of the line, and is executed using
         the user's shell `exec' directive to avoid a lingering shell
         process.

シェルの論理 OR 演算子を使用できる必要があります。

host some_server
    hostname some_server
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ProxyCommand ssh frontserver1 -W %h:%p || ssh frontserver2 -W %h:%p || ssh frontserver3 -W %h:%p

host frontserver1
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ConnectTimeout 5

host frontserver2
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ConnectTimeout 5

host frontserver3
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ConnectTimeout 5

ConnectTimeout私はリストの3番目のホストを通過できないのに最大15秒かかるように各プロキシホストにディレクティブを自由に追加しました。Nホスト数にホストのデフォルト TCP タイムアウト設定を掛けます。

関連情報