我有一个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_keys
与permitopen
使用同样的问题。 在服务器端,/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.1
replacelocalhost
实例解决了这个问题
丢失连接的原因可能是防火墙过载或configuration为过度严格清理空闲连接,在SSH连接目标和转发端口的最终目标之间。
一旦防火墙判断连接已经空闲足够长时间,它可能会从连接状态表中删除连接信息。 如果连接的任一端点尝试传递任何stream量,则防火墙将拒绝连接(代表预期的目的地),因为您显然尝试使用现有连接,但防火墙不再具有状态跟踪信息那个连接。 因此,防火墙拒绝带有ICMP错误消息的数据包,因此“被pipe理禁止”。