ssh-agent 拒绝向 sudo 用户添加 root 的私钥

ssh-agent denies to add root's private key with sudo user

有没有办法在 ssh-agent 中使用标准 sudo 用户添加 root 的 ssh 私钥 ?

我不是很确定,但这是这个命令的限制吗?

ssh-add 手册页 中,我发现了这个: 身份文件不应该被除用户之外的任何人读取。请注意,ssh-add 会忽略其他人可以访问的身份文件。

这就是输出:

sudouser@myhost:/ $ ssh-agent

SSH_AUTH_SOCK=/tmp/ssh-Yppfd3Xp0Yrm/agent.2429; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2430; export SSH_AGENT_PID;
echo Agent pid 2430;

sudouser@myhost:/ $ eval $(ssh-agent)
Agent pid 2435

sudouser@myhost:/ $ ssh-add /home/sudouser/.ssh/id_rsa
Enter passphrase for /home/sudouser/.ssh/id_rsa:                                                                                                                                      
Identity added: /home/sudouser/.ssh/id_rsa (/home/sudouser/.ssh/id_rsa)

按预期工作。 但是使用 root 的密钥我得到:

sudouser@myhost:/ sudo ssh-add /root/.ssh/ansible/id_rsa

or

sudouser@myhost:/ sudo sh -c 'ssh-add /root/.ssh/ansible/id_rsa'

Could not open a connection to your authentication agent.

sudo 清除环境变量。 ssh-add 需要 SSH_AUTH_SOCK 和 SSH_AGENT_PID 才能知道如何与 ssh-agent 交谈。所以你必须通过在命令中添加它们来欺骗它:

sudo sh -c 'export SSH_AUTH_SOCK="'"$SSH_AUTH_SOCK"'"; export SSH_AGENT_PID="'"$SSH_AGENT_PID"'"; ssh-add /path/to/roots/private/key'