SSH認証ソケットを他のユーザーと共有する最良の方法は何ですか?

SSH認証ソケットを他のユーザーと共有する最良の方法は何ですか?

私はそれを使用していますアンシプールリモートサーバーを設定するには、SSHエージェントを使用してgit cloneリポジトリに転送します。bitbucket.orgsudo以下を含む環境変数を保持するためにディレクトリ内のファイルを使用しているため、ローカルSSHキーを使用してください。SSH_AUTH_SOCK/etc/sudoers.d/

Defaults env_keep += SSH_AUTH_SOCK

これにより、この環境変数を使用できるようになりますsudo。問題は、web利用可能なソケットファイルにアクセスできない他のユーザーに複製しようとするときですSSH_AUTH_SOCK

0777現在、このユーザーに対してソケットディレクトリの所有権を繰り返し設定しているため、ソケットファイルに権限を付与しません。

$ ls -l /tmp
drwx------  2 web web 4096 Aug  7 09:09 ssh-PcIG22W1CM

これはすべてAnsibleを使用して行われましたが、この質問は他の状況にも適用されるため、Ansibleコードを共有しません。

rwx誰にも権限を与えずにこのソケットファイルを共有する最善の方法は何ですか?

ベストアンサー1

ルートとして、以下を使用してソケットをブリッジできます。

socat UNIX-LISTEN:/var/run/authsocket.sock,umask=077,user=web,fork "UNIX:$SSH_AUTH_SOCK"

Linuxで、これは他のユーザーがconnect()このソケットにアクセスするのを防ぎます。

Linuxではsetfacl user:$user:w $SSH_AUTH_SOCKソケット()にACLを設定しようとしていますが、OpenSSHクライアントはEUIDの確認ソケットに対する権限で、所有者およびrootユーザーにのみ許可されます。

おすすめ記事