ソケットファイルが利用可能であることを確認する

ソケットファイルが利用可能であることを確認する

次のようにSSHコマンドでcontromasterオプションを使用します。

ssh -i id_rsa -o ControlMaster=auto -o ControlPath='~/.ssh/controlmasters/%r@%h' -o ControlPersist=3600 user@hostname

これにより、以前の接続を再利用してより速くログインできます。 WiFi接続が失われて10分後に再接続しようとすると、同じソケットファイルを再利用できなくなることがわかりました。

ソケットファイルがまだ存在するかどうかを確認するプログラムはありますか?最終的に既存のソケットファイルが利用可能かどうかを確認するifステートメントを作成したいと思います。その場合は続行し、そうでない場合は新しいファイルを作成します。

答え1

SSH-O checkコマンドを使用します。

$ ssh -O check user@hostname || ssh -Nf user@hostname

関連メモで、さまざまな設定を〜/ .ssh / configのセクションに移動して、sshコマンドを簡素化できます。ここでは、:%psshポート番号をソケットファイル名の一部にするパターンをControlPathに追加しました。

host user@hostname
    IdentitiesOnly yes
    ControlPath ~/.ssh/controlmasters/%r@%h:%p
    ControlMaster auto
    ControlPersist 3600

これによりコマンドが簡単になります。

ssh -i id_rsa user@hostname

常に同じIDファイルを使用している場合は、〜/ .ssh / configでパラメータを使用してそれを指定することもできますIdentityFile。 Ubuntu 22.04では、id_rsaこれが試行される基本リストの最初のエントリであるため、コマンドラインから簡単に削除できます。詳細については、ssh_config(5) マンページを参照してください。

関連情報