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
他の接続でそれを使用するには、デフォルトの接続を開く必要があります。
ソケットファイルは、デフォルト接続が開いている場合にのみ使用できます。デフォルト接続が閉じられると、ソケットファイルは削除されます。マスター接続が閉じると、開いている「スレーブ」接続もすべて閉じます。