SSH隧道在几小时后产生“pipe理禁止:打开失败”

我有一个dynamic的OpenSSH tunel运行如下:

ssh -N -D '*:1080' [email protected] 

(OpenSSH_5.3p1 Debian-3,OpenSSL 0.9.8n 2010年3月24日)

它可以完美运行几个小时或几天,但开始随机丢弃连接(不是100%,只有一些),产生:

 channel 1019: open failed: administratively prohibited: open failed 

我search了它,但是找不到完整的否认服务器configuration错误信息,这里的隧道工作了几个小时才放下一些请求。

任何想法?

尝试将端口转发到无法访问的目标时,我看到了相同的消息:

 ssh example.com -L 1337:example.invalid:80 telnet localhost 1337 

[email protected]:〜$频道3:打开失败:pipe理禁止:打开失败

“行政禁止”也是ICMP控制消息之一。 SSH服务器和隧道目的地之间的路由器是否可以发送?

如果嗅探是可能的,一个简单的pcapfilter只有icmp可以显示所有的ICMPstream量。

有没有机会遇到不好的链接? 我对这个消息感到非常困惑 – 我能想到的唯一的另外一件事就是内存问题 – 你有没有足够的可用内存来存储?

使用authorized_keyspermitopen使用同样的问题。 在服务器端,/var/log/auth.log包含:

 Received request to connect to host 127.0.0.1 port 10001, but the request was denied. 

当我使用autossh创build隧道时,我需要两个端口:一个用于连接(10000)和一个用于监控(10001)。 监控端口出现了问题。

在我的authorized_keys我有这个:

 command="/home/user/tunnel",no-X11-forwarding,no-pty,permitopen="localhost:10000",permitopen="localhost:10001" ssh-rsa AAAA 

我通过用127.0.0.1replacelocalhost实例解决了这个问题

丢失连接的原因可能是防火墙过载或configuration为过度严格清理空闲连接,在SSH连接目标和转发端口的最终目标之间。

一旦防火墙判断连接已经空闲足够长时间,它可能会从连接状态表中删除连接信息。 如果连接的任一端点尝试传递任何stream量,则防火墙将拒绝连接(代表预期的目的地),因为您显然尝试使用现有连接,但防火墙不再具有状态跟踪信息那个连接。 因此,防火墙拒绝带有ICMP错误消息的数据包,因此“被pipe理禁止”。