鉱山ではこの設定を有効に~/.ssh/config
しましたControlMaster auto
。それは私にとって非常に効果的ですが、私を迷惑にする一つの行動があり、それを取り除きたいと思います。
2つの端末エミュレータウィンドウAとBがあるとしましょう。ウィンドウAはリモートホストへの接続を呼び出し、ssh
ウィンドウBでも同じことを行います。次に、exit
ウィンドウAを入力してセッションを閉じます。接続が切断されましたが、ウィンドウssh
Aのプロセスは、ウィンドウBのプロセスがリモートセッションも終了するのを待たなければならないため、ローカルセッションでは終了しません。つまり、制御ソケットを実行し続ける必要があります。
ウィンドウAから切断した場合は、ssh
ウィンドウBのセッションが継続して実行されている間に呼び出された元のローカルセッションにすぐに戻ることをお勧めします。あなたは次のように尋ねることができます。では、どのプロセスが制御ソケットを管理する必要がありますか?理想的には、もはや実行中のセッションがない場合は、自動的に切断されたユーザーシステムインスタンスの管理下で実行される専用の3次プロセスになることを願っています。しかし、バックグラウンドプロセスが長く続く昔ながらのアプローチも問題ありません。
私は制御ソケットホストを手動で起動するのを避けたいと思います。最初のセッションを開くと、自動的に開始する必要があります。
大丈夫ですか?
答え1
次のコマンド
ssh -f -N remote_host
ssh
リモートホストへのセッションは作成されますが、コマンド(-N
)と背景自体(-f
)は実行されません。このコマンドはマスターコントロールとして使用できます。
次のようなものをトンネリングしたい場合
ssh -X -f -N remote_host
アイドルセッションが切断された場合(たとえば、NATタイムアウトのため)、次のエントリを追加します。
-o ServerAliveInterval=30
(またはconfig
ファイルのそれに対応するエントリ)は、セッションをアクティブなままにしようとします。