6261


例えば以下のように、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以外のユーザーの権限でコマンドを実行する場合、秘密鍵を引き継ぐ方法はあるのでしょうか？


CC BY-SA 3.0
2015-02-10T09:29:30.923
6256
2018-10-10T01:59:40.070
2018-10-10T01:59:40.070
3060
336
question
linux ssh sudo
sudo -u someuserした場合にsudoコマンドを打ったユーザーの秘密鍵の鍵を使いたい


以下は回答ではありません。 ~~(頃合いを見て削除します)~~

ssh-agent が使用する socket ファイルのパーミッションは、まぁ、当然ではありますが、ssh-agent
プロセスの実効ユーザのみが読み書き可能となっています(socket ファイルのあるディレクトリも)。

[code]

    $ 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/
    
[/code]

ではこのパーミッションを変更したら… 非常に危険な状況になりますよね。

以上です。


CC BY-SA 3.0
2015-02-10T10:22:52.900
6261
2015-02-10T11:28:53.163
2015-02-10T11:28:53.163
6256
answer