開いているSSH接続を維持し、シェルスクリプトでそれを使用する方法は?

開いているSSH接続を維持し、シェルスクリプトでそれを使用する方法は?

現在私は次のように電話しています:

$ ssh [email protected] my_cmd

これは遅く、安全に自動化することは容易ではない。私はSSH接続を確立し、私のコマンドをhost.comに渡し、出力を印刷するスクリプトを持っていると思います。

それは可能ですか?

私のコンピュータをAuthorized_keysに追加することは私にとってオプションではなく、速度低下の問題を解決しません。

ベストアンサー1

ControlMasterこの機能を既存チャネルでの多重化と呼びます。これにより、ssh はすべての鍵交換を実行し、一度だけログインするので、後続のコマンドはより速く実行されます。次の3行を使用して有効にできます.ssh/config

Host host.com
  ControlMaster auto
  ControlPath ~/.ssh/master-%C
  # for openssh < 6.7 you need to use this one:
  # ControlPath ~/.ssh/master-%r@%h-%p
  ControlPersist 5m

ニーズに合わせて調整できます。または、他のコマンドの実行中に開いているデフォルトの接続を開くこともできますControlPersist

この機能を調整する可能性はたくさんありますが、ControlPath他のユーザーが読めない、または乱用できない安全な場所にソケットを保管してください。

詳細はssh_config(5)マニュアルページで確認できます。

おすすめ記事