sudo ssh-add /root/.ssh/id_rsa 返回错误

sudo ssh-add /root/.ssh/id_rsa 返回错误

我正在尝试使用 sudo 使用命令保存 ssh 身份验证ssh-add

linux$ sudo ssh-add /root/.ssh/id_rsa
Could not open a connection to your authentication agent.

但正如所指出的,它返回错误

我做了一些研究,发现我必须执行eval "ssh-agent -s"以下链接中指示的命令:https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent/17695338#17695338

但是如果使用 sudo 命令执行它会出现错误

$ sudo eval `ssh-agent -s`
sudo: eval: command not found

我错过了什么?

答案1

从以下关联

幸运的是,有一种方法可以解决这个问题。Sudo 有一个配置选项,允许保留发出 sudo 命令的用户的给定环境变量。该选项称为 env_keep,可以通过更改 /etc/sudoers 文件中的设置来配置,如下所示(始终使用 visudo 来编辑文件):

visudo

Defaults    env_reset
Defaults>root    env_keep+=SSH_AUTH_SOCK

换句话说,在 Defaults env_reset 行下面添加保留 SSH_AUTH_SOCK 变量的行。然后保存文件并运行

ssh-agent bash
ssh-add

并且您应该能够执行 sudo 命令,使用非 sudo 用户的密钥访问您的服务器,而无需输入密钥密码。

答案2

不幸的是,我找不到这个建议的原始来源,但这对我来说很管用。本质上,它在使用 sudo 运行命令时使用了当前用户的 ssh 环境变量。

sudo sh -c 'export SSH_AUTH_SOCK="'"$SSH_AUTH_SOCK"'"; export SSH_AGENT_PID="'"$SSH_AGENT_PID"'"; ssh-add /root/.ssh/id_rsa'

相关内容