首先我用
启动ssh-agenteval `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.
答案 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
命令作为常规(非超级)用户运行。