SSH 隧道错误:“通道 1:打开失败:管理禁止:打开失败”

SSH 隧道错误:“通道 1:打开失败:管理禁止:打开失败”

当我打开这个 ssh 隧道时:

ssh -nXNT -p 22 localhost -L 0.0.0.0:8984:remote:8983

当尝试访问 localhost:8984 上运行的 HTTP 服务器时,我收到此错误:

channel 1: open failed: administratively prohibited: open failed

此错误是什么意思?您可以在哪台机器上解决该问题?

答案1

通道 1:打开失败:管理禁止:打开失败

上述消息表示您的 SSH 服务器拒绝了 SSH 客户端打开侧通道的请求。这通常来自-D-L-w,因为需要 SSH 流中的单独通道来传送转发的数据。

由于您正在使用-L(也适用于-D),因此有两个相关选项导致您的 SSH 服务器拒绝此请求:

  • AllowTcpForwarding(正如史蒂夫·布佐纳斯提到的)
  • PermitOpen

这些选项可以在 中找到/etc/ssh/sshd_config。您应该确保:

  • AllowTCPForwarding要么不存在,要么被注释掉,要么被设置为yes
  • PermitOpen不存在、被注释掉或设置为any [1]

此外,如果您使用 SSH 密钥进行连接,则应检查与您的 SSH 密钥相对应的条目中~/.ssh/authorized_keys是否没有no-port-forwardingpermitopen语句[2]

PermitTunnel如果您尝试使用 -w 选项,则该选项与您的特定命令无关,但也与本主题有些相关。


答案2

在一个非常奇怪的情况下,我在尝试创建本地隧道时也遇到了这个错误。我的命令是这样的:

ssh -L 1234:localhost:1234 user@remote

问题是,在远程主机上,/etc/hosts没有“localhost”条目,因此 ssh 服务器不知道如何设置隧道。对于这种情况,这是一个非常不友好的错误消息;很高兴我终于明白了。

经验教训:确保隧道的目标主机名可由远程主机通过 DNS 或/etc/hosts.

答案3

至少一个答案是由于某种原因无法使用 ssh 访问“远程”机器。该错误消息简直是荒谬的。

答案4

ControlPath当您使用 ssh 选项并ControlMaster共享一个套接字连接以在多个客户端连接(从一个客户端到同一 user@server)之间重用时,肯定会弹出此错误。打开太多(无论这意味着什么,在我的情况下约为 20 个连接)会产生此消息。关闭所有以前的连接可以让我打开新的连接,再次达到限制。

相关内容