我正在努力诊断为什么一台特定服务器不遵守我设置的代理转发。
从客户端(macOS)我可以ssh -A
连接到任意数量的服务器,并在它们上可以看到已SSH_AUTH_SOCK
设置并ssh-add -L
显示我的密钥。
在一台特定主机上,这不起作用。当我SSH_AUTH_SOCK
设置登录时,但ssh-add -L
显示“ this agent has no identities.
”
首先,我的感觉是,如果SSH_AUTH_SOCK
设置了,那么代理转发就AllowAgentForwarding
在客户端和服务器上启用的意义上起作用(我已经检查过这是真的)。
例如:
在有问题的主机上:
$ echo $SSH_AUTH_SOCK
/tmp/ssh-ZpxzssfdPuZq/agent.14304
$ ssh-add -l
This agent has no identities.
对于该主机上的 ssh 服务器,我在DEBUG3
设置时在 sshd 日志中找到了这些“代理”的提及:
Jul 4 xxxxxxx hostname sshd[14924]: debug1: server_input_channel_req: channel 0 request [email protected] reply 0
Jul 4 xxxxxxx hostname sshd[14924]: debug1: session_by_channel: session 0 channel 0
Jul 4 xxxxxxx hostname sshd[14924]: debug1: session_input_channel_req: session 0 req [email protected]
相应地,在客户端(macOS)上,我看到以下内容ssh -vvv hostname
:
debug1: Requesting authentication agent forwarding.
debug2: channel 0: request [email protected] confirm 0
debug3: send packet: type 98
这涵盖了我对 ssh 及其配置的了解所包含的所有选项和场景。所以我想问我可以采取哪些进一步措施来解决问题,或者我更明显地缺少什么。
谢谢
河
答案1
库萨拉南达的评论很有用——指引我去检查事情。与我的想法相反,我确实在有问题的服务器的 $HOME/.bash_profile 中有“eval $(ssh-agent)”。我只是没想去检查一下。这显然覆盖了套接字。原因是该服务器历史上被用作连接其他服务器的源,当时我在其上使用了代理。