SSH ControlMasterを正しく使用する方法

SSH ControlMasterを正しく使用する方法

SSHを介してリモートで複数のコマンドを実行するスクリプトがあります。実行間で異なるタスクを実行したいので、各コマンドを個別に実行します。

ただし、新しいコマンドを実行するたびにSSHセッションを再生成したくありません。読みました-oControlMasterが、うまく動作しないようです。

私が実行したとき:

ssh -oControlMaster=yes -oControlPath=/tmp/test.sock root@host

パスワードを入力すると、SSHセッションが開始されます。終了すると、/tmp/test.sockファイルが見つかりません。

私は何を見逃していますか?

答え1

このControlPersistオプションを使用すると、サーバーとの接続を切断した後にソケットを離れることができます。

たとえば、私のSSH設定ファイルには、3秒間接続を開いたままにするこのフラグメントがあります。

オーナー*
   コントロールマスター自動
   ControlPath ~/.ssh/master-socket/%r@%h:%p
   #ControlPath /run/user/%i/sshmasterconn-%C
   #ControlPath ~/.ssh/%r@%h:%p
   制御は3秒間続きます。

答え2

他の接続でそれを使用するには、デフォルトの接続を開く必要があります。

ソケットファイルは、デフォルト接続が開いている場合にのみ使用できます。デフォルト接続が閉じられると、ソケットファイルは削除されます。マスター接続が閉じると、開いている「スレーブ」接続もすべて閉じます。

関連情報