ssh 代理转发失败,显示“无法打开与您的身份验证代理的连接”

ssh 代理转发失败,显示“无法打开与您的身份验证代理的连接”

当我尝试使用OpenSSH 客户端的Could not open a connection to your authentication agent代理转发选项 ( ) 从中间服务器连接到第三台服务器时,收到一条错误消息。使用加载到 中的密钥,第一次连接到中间服务器非常顺利。尝试连接到最终服务器时会显示错误消息。-Assh-agent

我的 OpenSSH 客户端设置为允许ForwardAgent yes在 中进行转发~/.ssh/config,中间服务器已AllowAgentForwarding yes在守护进程的配置文件中。客户端配置不会被系统级文件覆盖。

我没有使用终端多路复用器,以避免因未设置环境变量而导致的错误。要运行代理,我使用exec ssh-agent zsh并验证和都SSH_AUTH_SOCK存在SSH_AGENT_PID于本地环境中。我ssh-add分别使用添加​​中间服务器和最终服务器的私钥;我使用验证它们是否已添加ssh-add -l

所有服务器都是较新版本(OpenSSH 5.3),客户端是 OpenSSH 6.2。

答案1

我在这里发布这个是因为我花了很多时间尝试使用 Google 寻找解决方案、阅读手册页并查阅有关 SSH 的流行书籍,但都无济于事。

找到问题的关键是仔细研究调试输出。

debug1: Remote: Agent forwarding disabled: mkdtemp() failed: Permission denied

中间机器是使用 AWS 堆栈的云提供商托管的虚拟服务器 (RHEL 6.4)。由于我无法解释的原因,目录上的权限设置/tmp为:

drwxr-x--- 19  727  727  4096 Nov 28 05:30 tmp

通过 Grep 搜索,/etc/passwd我找不到 ID 为 727 的用户。

像这样纠正权限解决了我的困境:

sudo chown 0:0 /tmp
sudo chmod 1777 /tmp

有人能谈谈该/tmp目录的特殊所有权吗?

答案2

对于任何寻求整个过程来转发密钥并获取调试日志以及修复的人来说,它如下:

创造~/.ssh/config

Host [IP of HOST]
    ForwardAgent yes

运行 ssh-agent

eval "$(ssh-agent)"

添加您想要转发到 ssh 代理的密钥:

ssh-add [path to key if there is one]/[key_name].pem

登录远程主机:

ssh -A -v [user]@[hostname]

查看 ssh 上的调试日志

debug1: Remote: Agent forwarding disabled: mkdtemp() failed: Permission denied
Last login: Tue Nov 10 22:57:07 2020 from 10.100.28.239

登录远程计算机时查看 tmp 权限。确保用户有权访问该tmp文件夹

ls -la /tmp/
sudo chown 0:0 /tmp
sudo chmod 1777 /tmp

我的问题是,我创建了一个用户来运行服务器,但该用户没有临时文件夹所需的权限。我不想使用 root,因为这不是最佳做法。修复方法是一样的。:)

相关内容