接続を確立するのに N 秒以上かかる場合、SSH の試行をキャンセルするにはどうすればよいですか?

接続を確立するのに N 秒以上かかる場合、SSH の試行をキャンセルするにはどうすればよいですか?

SSH を使用して複数のホストに接続するデプロイ スクリプトがあります。 時々、ホストに非常に大きな負荷がかかり、ssh の試行がハングすることがあります。 これにより、最終的にはデプロイでタイムアウトが発生しますが、非常に長い時間が経過してからになります。

理想的には、スクリプトが 20 分のタイムアウトよりも早く失敗するようにしたいと思います。

一定期間経過後に SSH 接続が確立されていないことを検出し、より制御された方法で試行をキャンセルする方法はありますか?

答え1

次のように接続タイムアウトを設定することを検討する必要がありますConnectTimeout:

-o ConnectTimeout=1200

のマニュアルページとしてssh_configオプションの状態:

デフォルトのシステム TCP タイムアウトを使用する代わりに、SSH サーバーに接続するときに使用するタイムアウト (秒単位) を指定します。この値は、ターゲットがダウンしているか実際に到達できない場合にのみ使用され、接続が拒否された場合には使用されません。

したがって、使用法は次のようになります。

ssh -o ConnectTimeout=1200 [email protected]

ちなみに、ConnectTimeoutこのスクリプトの多くのものと同様に、値は秒単位で設定されます。つまり、1200秒は20分に相当します。

関連情報