OpenSSH sshのControlPathオプションで単に%hを使用するとどうなりますか?

OpenSSH sshのControlPathオプションで単に%hを使用するとどうなりますか?

「ssh_config(5)」のマニュアルページで、ControlPathオプションに少なくとも%h%pおよび%rプレースホルダを含める必要があることを示唆しているのはなぜですか?一意に識別します。共有接続あたり?

私の考えでは、会議が何度もあるはずです。共有する同じホストの同じソケットに接続します。したがって、次のような単純な定義を持つことは妥当ではないでしょうか?

ControlPath ~/.cache/ssh/mux/%h

次のようなものの代わりに:

ControlPath ~/.cache/ssh/mux/%r@%h:%p

最初の定義を理解すると、同じリモートホストの異なるリモートポート上の異なるリモートユーザーの複数のセッション間で接続が共有されます。

私はホストのデフォルトセクションに最初の定義をしたいと思います。それで十分でしょうssh -o ControlMaster=no

リモートユーザーとリモートポートに関係なく、同じローカルユーザーが開始したすべてのセッション間で同じリモートホストへの接続を共有したいと思います。マスタークライアントのソケットは、ローカルユーザーのホームディレクトリに配置する必要があります。

ベストアンサー1

「複数のセッションが同じソケットを共有し、同じホストに接続する必要があると思います。」

彼らはできる。ただし、既存の接続を介してホストに接続している場合は、ControlPathどのユーザーとしてログインしても、その接続の元のユーザーとしてログインします。たとえば、「どこか」への接続が確立されていません。

ssh -o ControlPath=~/.ssh/%h -o ControlMaster=yes bob@somewhere

今回の会議はbob@somewhereです。

ssh -o ControlPath=~/.ssh/%h -o ControlMaster=no sue@somewhere

今回の会議は返品はいbob@somewhereは同じControlPathを使用して設定したためですControlMaster=no。その場合、ControlMaster=yessueとしてログインしますが、sshは次のようにControlPathパラメータを無視しますman ssh_config

他のセッションがこのソケットに接続できます。同じControlPathを使用ControlMasterが「いいえ」に設定されています

証拠として、どちらの場合も、bobが終了したときにControlMaster=yes「sue」セッションがまだ実行されていても、ControlPathソケットが消えた場合、つまり~/.ssh/somewhereソケットはsueセッションで使用されていません。

したがって、同じ接続を使用したい場合はそう%hすることができますが、注意してください。複数の他のリモートユーザーと接続を共有することはできません。- sshはこれを許可しません。

おすすめ記事