シナリオ:
ローカルPCでssh-agentを実行していますが、すべてのサーバー/クライアントはSSHエージェント認証を転送するように設定されています。ローカルPCのssh-agentを使用して、すべてのマシン間を移動できます。うまくいきます。
自分自身(user1)としてマシンにSSHで接続し、 user2という名前の別のユーザー(sudo -i -u user2)に変更してから、ローカルPCで実行しているssh-agentを使用して別のボックスにsshする必要があります。ssh user3 @ machine2(user3のauthorized_keysファイルに私の公開SSHキーがあると仮定)のようなことをしたいとしましょう。
私がしているsudoを保つように構成されたSSH_AUTH_SOCKの環境変数を。
関与するすべてのユーザー(user [1-3])は、非特権ユーザー(rootではない)です。
問題:
SSH_AUTH_SOCK変数が正しく設定されていても、別のユーザーに変更すると(その設定を/tmp/ssh-HbKVFL7799/agent.13799と言います)、user2は、user1によって作成されたソケットにアクセスできません。もちろん、そうでなければ、user2はuser1の秘密鍵を乗っ取り、そのユーザーとしてホップすることができます。
このシナリオは、user2のsudoを介してシェルを取得する代わりに、rootのsudoを介してシェルを取得した場合にうまく機能します。当然、rootはマシン上のすべてのファイルにアクセスできます。
質問:
できればsudoを使用して、user1からuser2に変更しながら、user1のSSH_AUTH_SOCKに引き続きアクセスするにはどうすればよいですか?