SSHトンネリングがオンになっているかどうかを確認するスクリプトを書く

SSHトンネリングがオンになっているかどうかを確認するスクリプトを書く

次のように ssh トンネルを設定しました。

ssh -N -L 1105:remote.server:25 office-machine&

たとえば 1 分に 1 回 (おそらく cron ジョブを使用して実行できます) チェックを設定するスクリプトを作成し、この接続が確立されているかどうかを確認し、そうでない場合は接続を確立します (VPN がオンの場合)。

SSH トンネルのチェックを実行するにはどうすればいいですか?

前もって感謝します。

追伸:試してみました

autossh -N -L 1105:remote.server:25 office-machine&

しかし、終了します。オプションは正しいと思います。実際、man ページ/ヘルプには -N および -L オプションはなく、-f および -M オプションのみであると示されています。

答え1

これに使えますautossh。引用Ubuntu のマニュアルページ:

 autossh is a program to start a copy of ssh and monitor it, restarting it as necessary
 should it die or stop passing traffic.

 The original idea and the mechanism were from rstunnel (Reliable SSH Tunnel). With version
 1.2 of autossh the method changed: autossh uses ssh to construct a loop of ssh forwardings
 (one from local to remote, one from remote to local), and then sends test data that it
 expects to get back. (The idea is thanks to Terrence Martin.)

したがって、追加の監視ポートを指定する必要がありますautossh。NとN+1の両方が空いているポートNを選択し、-Mオプションとともに使用します。例:

autossh -M 20000 -N -L 1105:remote.server:25 office-machine

監視を無効にすることもできます-M 0。Debian ベースのシステムでは、autossh監視用に空きポートを自動的に選択できます。


VPN 接続が切断された場合、autossh監視ポート経由で SSH 接続が切断されたことを検出し、再起動を試みます。その後、次の操作を行います。

Continued failures
 If the ssh connection fails and attempts to restart it fail in quick succession, autossh
 will start delaying its attempts to restart, gradually backing farther and farther off up to
 a maximum interval of the autossh poll time (usually 10 minutes).  autossh can be "prodded"
 to retry by signalling it, perhaps with SIGHUP ("kill -HUP").

関連情報