最近、SSHクライアントのControlMaster機能を頻繁に使用しています。これにより、単一のSSH-TCP接続を使用して、複数のシェルと同じリモートシステムへのポート転送を行うことができます。これについて最も厄介なことは、開かれた最初のシェルのプロセスが自動的にControlMasterになることです。つまり、このプロセスが終了すると、コントロールマスター接続を使用する他のすべてのシェルとポート転送が利用できなくなります。
ControlMaster接続を使用した接続が存在する限り、リモートシステムへの最初のsshコマンドが追加のバックグラウンドプロセスを生成し、接続を保持するようにしたいので、他のクラッシュの危険を冒さずに実際のシェルを単純に閉じることができます接続。理想的には、バックグラウンドのControlMasterプロセスは、最終的にシャットダウンする前に、新しいシェルまたはポート転送がControlMasterを使用するまでしばらく待機するように構成可能であることさえあります。
sshクライアントにそのようなことをさせる方法はありますか?sshを使用して最初のシェルを作成する前に、このような接続を手動で作成できることはわかっていますが、そうしないとたまにそれを忘れてしまうので、明示的にこれを自動的に実行させたいと思います。
.ssh / configでリモートサーバー名の構成済み省略形を使用することが多く、名前としてUSERNAME @ NETWORK_NAME:NETWORK_PORTを使用してControlMasterソケットが作成されるため、ラッパースクリプトにそれを実行させるのも簡単ではありません。したがって、ラッパーが意図したとおりに機能するには、.config / sshを完全に理解する必要があります。