所以我遇到了一个奇怪的 ssh 代理转发问题,我正在尝试调试。防火墙内有许多机器,我可以通过代理访问,或者如果我在防火墙内连接,可以直接访问。除了一种情况外,一切都正常——如果我通过代理连接到一台机器,然后尝试执行任何事物使用 ssh-agent(通过 ssh 代理转发),它会锁定——连接挂起并最终超时,断开 ssh 会话。只要我不做任何试图访问代理的事情,它就可以正常工作。但即使是锁定ssh-add -l
。
这只发生在一台主机上,并且仅当通过代理连接时才会发生。通过代理连接的其他主机或直接连接此主机(当在防火墙内时)都可以正常工作。
所以我的问题是,我该如何调试它?我尝试使用ssh -v
连接时获取有关正在发生的事情的一些信息。当我在工作案例中使用它时,我看到类似以下内容:
$ ssh-add -l
debug1: client_input_channel_open: ctype [email protected] rchan 2 win 65536 max 16384
debug1: channel 1: new [authentication agent connection]
debug1: confirm [email protected]
debug1: channel 1: FORCE input drain
...key fingerprints from the agent.
但在非工作情况下我只是得到
$ ssh-add -l
debug1: client_input_channel_open: ctype [email protected] rchan 2 win 65536 max 16384
debug1: channel 1: new [authentication agent connection]
debug1: confirm [email protected]
然后它就挂起了(并在几分钟后超时,断开整个 ssh 会话。)
所有相关主机均在运行OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0.2g 1 Mar 2016
我正在做代理
ProxyCommand /bin/nc -x proxy_host:1080 %h %p
代理转发
ForwardAgent yes
在我的 .ssh/config 文件中。我已尽可能地精简了这些内容(因此从配置文件中删除了其他所有内容,但行为没有变化)。
在目标机器上,代理套接字看起来很正常:
--> echo $SSH_AUTH_SOCK
/tmp/ssh-WMT414Uq0q/agent.2170
--> ls -l $SSH_AUTH_SOCK
srwxrwxr-x 1 cdodd cdodd 0 Apr 2 09:06 /tmp/ssh-TTx7SEvwkx/agent.2170=