OpenSSH コントロールソケットを /run に配置します。

OpenSSH コントロールソケットを /run に配置します。

OpenSSHには、コントロールソケットを介して接続を再利用する機能があります。パブリックアクセスソケットが提起するセキュリティ上の問題のため、これらのコントロールソケットはパブリックエリアにはならないことが一般に受け入れられています。

ソケットの位置などを使用するのも~/.ssh/sockets一般的な戦略です。これは、私がしばらくの間、私が苦しんでいた問題を引き起こします。

基本プロセスが強制終了され、クリーンアップが完了しない場合、ソケットストアは手動でクリーンアップする必要がある残りのソケットで満たされます。このような状況の例には、停電やその他のハードウェア障害があります。

最新のLinuxディストリビューションには、/run揮発性ランタイムデータと/run/user/<uid>ユーザー固有の揮発性ランタイムデータが含まれています。このディレクトリは所有者だけがアクセスでき、ユーザーのためにシステムによって作成されます。

コントロールソケットがこの説明に完全に準拠していることを考慮して、ソケットをそこに移動することを嬉しく思います。ただし、ユーザーの UID 用のディレクトリの作成中に、ユーザー名のみで現在のユーザーのアドレスを指定できるようにする OpenSSH 構成には、いくつかの問題があります。ホスト間で一般的な構成を共有するため、構成にUIDをハードコードしたくありません。

私は、起動時にソケットを消去する一般的なOpenSSH設定を使用できるきれいなソリューションを探しています。

答え1

2016年2月にリリースされたOpenSSH 7.2から数字UIDまでの拡張式が%iサポートされています。ControlPath

例えば、

ControlPath /run/user/%i/master-%l-%r@%h:%p

あるいは、最新のOpenSSHが利用できない場合は、それを使用して一時/dev/shmデータを保存することを検討できます。それは世界的に書くことができ、常にそうでしたtmpfs。他のユーザーはアクセスできますが、コントロールソケット自体には適切なアクセス権があるため安全です。

https://superuser.com/questions/45342/when-should-i-use-dev-shm-and-when-should-i-use-tmp

関連情報