即使已定义SSH_AUTH_SOCK,也无法打开与身份验证代理的连接

时间:2014-12-04 18:08:59

标签: bash ssh ubuntu-12.04 ssh-keys ssh-agent

首先我用

启动ssh-agent
eval `ssh-agent -s`

我确认SSH_AUTH_SOCK是通过运行echo $SSH_AUTH_SOCK来设置的,这会令人鼓舞地返回/tmp/ssh-oCsFfHvR3345/agent.3345

然而,当我运行sudo ssh-add ~/.ssh/id_rsa时,我得到了

Could not open a connection to your authentication agent.

此外,ssd-add -l会返回The agent has no identities.

1 个答案:

答案 0 :(得分:1)

如果您通过sudo运行SSH命令,则不会设置环境变量。

来自man sudoers

  

默认情况下,启用env_reset选项。这会导致命令在新的最小环境中执行。在AIX(以及没有PAM的Linux系统)上,使用/ etc / environment文件的内容初始化环境。除了env_check和env_keep选项允许的调用过程中的变量之外,新环境还包含TERM,PATH,HOME,MAIL,SHELL,LOGNAME,USER,USERNAME和SUDO_ *变量。这实际上是环境变量的白名单。

您可以通过运行sudo env来检查sudo命令可用的环境变量。

以上内容将解释您描述的行为,但您确实应该将ssh命令作为常规(非超级)用户运行。