是否可以使用标准 sudo用户在 ssh-agent 中添加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.
答案 0 :(得分:0)
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'