端末/セッションを自動的に終了するバックグラウンドSSHトンネルを設定するには?

端末/セッションを自動的に終了するバックグラウンドSSHトンネルを設定するには?

私が望むものは次のとおりです。

  1. LinuxシステムのバックグラウンドでSSHトンネルを設定できます(実際には.bashrcに設定したい)。
  2. SSHトンネルプロセスが有効になっている場合にのみ、そのマシンのすべてのユーザーとしていつでもこのトンネルを使用してプロセスを実行できます。
  3. ターミナル/セッションを終了すると、SSHトンネルも終了する必要があります。

Linuxでは、次のようにバックグラウンドSSHトンネルを設定できることを知っています。

ssh -Nf -L 8000:1.2.3.4:8000 [email protected]

この端末/セッションを終了しても、このSSHトンネルはまだバックグラウンドで実行されています。

自動的にシャットダウンするにはどうすればよいですか?

私の場合は、(愚かな会社のファイアウォールをバイパスするために)サーバーにログインするたびに、ほぼ毎回SSHトンネルを設定する必要がありました。一方、私はログアウトして何も残さないことを好みます。


注:
これhttp://www.g-loaded.eu/2006/11/24/auto- looking-ssh-tunnels/私の要件を満たしていません。これは、SSHトンネルプロセスの直後にプロセスを開始する必要があり、最初のSSHトンネル操作が完了したら、2番目のタスクのためにSSHトンネルをリセットする必要があるためです。一方、より長いスリープ時間を設定すると、SSH トンネルは端末で終了しません。

.bash_logoutを編集することもできますか?私はスクリプトを含まないスマートなソリューションを期待しています。

答え1

特定のユーザーがコンピュータにログインすると、〜/ .bashrcファイルがロードされ、bashrcファイルによって開始されたすべてのプロセスはそのユーザーのセッションを親プロセスにします。これで、ユーザーセッションが終了しない限り、プロセスは自動的に終了しません。

bashrcファイルでトンネルコマンドを使用するのは賢明ではないと思います。代わりに、bashrcファイルからトンネルコマンドのエイリアスを生成できます。特定の端末でエイリアスを呼び出してその端末を閉じると、トンネルの親端末がその端末になるため、トンネルが停止します。

関連情報