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
、..に移動します。
マニュアルが言うことを考えると:
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タイムアウト設定が発生した場合)。