私の助けを借り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 タイムアウト設定を掛けます。