質問: 例えば以下のように、SSHでログインした後にsudoでroot権限でコマンドを使う場合を考えます。 ホストOS ==(1)SSH==> ゲストOS vagrantユーザー ==(2)sudo==> ゲストOS rootユーザー (1)のSSHした後もホストOSの秘密鍵を引き継ぐためには、`~/.ssh/config`のゲストOS vagrantユーザーでのログインのセクションに`ForwardAgent yes`を追加すればよいです。 また(2)のsudo後に秘密鍵を引き継ぐためには、`/etc/sudoers`に`Defaults env_keep += "SSH_AUTH_SOCK"`を追加すればよいです。 どちらも`ssh-add -l`コマンドで、現在利用できる秘密鍵を確認できます。 現在以下の様な場合で煮詰まっています。 ホストOS ==(1)SSH==> ゲストOS vagrantユーザー ==(3)sudo -u someuser==> ゲストOS someuserユーザー この(3)の場合、`sudo -u someuser ssh-add -l`を行ってももとのvagrantユーザーで使っている秘密鍵(=ホストOSの秘密鍵)は表示されず、出力は`Could not open a connection to your authentication agent.`となります。 `sudo`にてroot以外のユーザーの権限でコマンドを実行する場合、秘密鍵を引き継ぐ方法はあるのでしょうか?
回答: 以下は回答ではありません。(頃合いを見て削除します) ssh-agent が使用する socket ファイルのパーミッションは、まぁ、当然ではありますが、ssh-agent プロセスの実効ユーザのみが読み書き可能となっています(socket ファイルのあるディレクトリも)。 ``` $ ls -l $SSH_AUTH_SOCK srw------- 1 nemo nemo /tmp/ssh-SnAKKdIr95Ie/agent.1315= $ ls -ld $(dirname $SSH_AUTH_SOCK) drwx------ 2 nemo nemo /tmp/ssh-SnAKKdIr95Ie/ ``` ではこのパーミッションを変更したら... 非常に危険な状況になりますよね。 以上です。