GNU/Linux >> Linux の 問題 >  >> Linux

SSH トンネルを確実に開いたままにする方法は?

autossh が必要なようです。これにより、ssh トンネルが監視され、必要に応じて再起動されます。数年間使用していますが、うまく機能しているようです。

autossh -M 20000 -f -N your_public_server -R 1234:localhost:22 -C

-M パラメータの詳細はこちら


すべてのステートフル ファイアウォールは、しばらくの間その接続のパケットを確認しないと、その接続を忘れます (状態テーブルが、接続を閉じずに両端が切断された接続でいっぱいになるのを防ぐため)。ほとんどの TCP 実装は、相手側からの通知がなくても長い時間が経過するとキープアライブ パケットを送信します (一般的な値は 2 時間です)。ただし、キープアライブ パケットが送信される前に接続を忘れるステートフル ファイアウォールが存在する場合、長く存続するがアイドル状態の接続は切断されます。

その場合の解決策は、接続がアイドル状態にならないようにすることです。 OpenSSH には ServerAliveInterval というオプションがあり、接続が長時間アイドル状態になるのを防ぐために使用できます (ボーナスとして、接続がアイドル状態であっても、ピアがすぐに停止したことを検出します)。


次の Bash スクリプトを使用して、前の ssh トンネルが停止したときに新しい ssh トンネルを生成し続けました。スクリプトを使用すると、追加のパッケージをインストールしたくない場合や、コンパイラを使用できない場合に便利です。

while true
do
  ssh <ssh_options> [[email protected]]hostname
  sleep 15
done

これには、接続を自動的に確立するためのキーファイルが必要ですが、autossh の場合も同様であることに注意してください。


Linux
  1. マルチホップSshトンネルでSsh-copy-idを使用する方法は?

  2. Linux でリバース SSH トンネルをセットアップする方法

  3. SSH を介してすべてのネットワーク トラフィックをトンネリングするにはどうすればよいですか?

  1. SSH 接続を終了するにはどうすればよいですか?

  2. ssh を転送するように ssh トンネルをセットアップするには?

  3. リバース (リモート) SSH トンネルを介した SSH 接続

  1. SSH接続タイムアウトを増やす方法

  2. ssh接続の速度を確認する方法

  3. Linuxで応答しないSSH接続を終了する方法は?