我无法使用 PuTTY 配置 AgentForwarding :(
PuTTY 是最新的 0.61 版本。我为 PuTTY 创建了公钥/私钥对,将它们转换为 openssh 格式,将它们添加到 host1 和 host2 上的 /root/.ssh/authorized_keys。在 /etc/ssh/sshd_config 中的两台主机上:
PermitRootLogin without-password
AuthorizedKeysFile %h/.ssh/authorized_keys
AllowAgentForwarding yes
Run Code Online (Sandbox Code Playgroud)
在两台主机上 /root/.ssh/config 包含
Host *
ForwardAgent yes
Run Code Online (Sandbox Code Playgroud)
在 PuTTY 配置中,选项 Connection/SSH/Auth/Allow agent forwarding [x] 被选中。
当我使用加载的密钥文件运行 pagent.exe 时,我可以在没有密码的情况下连接到 host1 和 host2。但是当我连接到 host1 并尝试连接时ssh root@host2
,系统会提示我输入密码。我的 host1 会话中未设置变量 $SSH_AUTH_SOCK。我究竟做错了什么?
小智 5
由于未设置 $SSH_AUTH_SOCK,因此可能是 putty/pagent 或 sshd 本身存在问题。
您可以很容易地将 sshd 置于调试模式。登录服务器(这可以通过 ssh 安全地完成,只要您在完成后记得重新启动 sshd)并停止 sshd(通过您的 init 脚本)。然后运行:
/usr/sbin/sshd -Dddd
(-D 用于前台模式,-ddd 用于详细调试)
再次尝试通过 putty 连接,并观察 sshd 的输出。如果 putty 正在发送代理转发的密钥,您应该会看到有关 auth-agent-req@openssh.com 的信息。如果您没有看到,则 Putty 没有正确发送用于代理转发/请求代理转发的密钥。
这应该缩小问题所在。您还可以在尝试通过 ssh 连接到 host2 时从 host1 运行“ssh -vvv”以获得详细的调试输出。
(此时,请记住 ctrl+C 前台 sshd 进程并从您的 init 脚本中重新启动它,否则您将被锁定在您的服务器之外!)