ssh错误消息中的通道号指的是什么?


12

在下面的示例中,通道号对应什么?服务器上有哪些?客户端上有哪些?

  $ ssh -L1570:127.0.0.1:8899 root@thehost
    Password:
    Last login: Fri Aug  9 13:08:44 2013 from theclientip
    Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
    You have new mail.
    # channel 2: open failed: administratively prohibited: open failed
    channel 3: open failed: administratively prohibited: open failed
    channel 2: open failed: administratively prohibited: open failed

ssh客户端在Windows 7上运行,并且该服务器的Tomcat服务器在端口8899上运行。

Tomcat不在远程计算机上的127.0.0.1上进行侦听,因此如果我将命令更改ssh -L1570:thehostpublicip:8899 root@thehost为端口转发则可以使用。因此,我知道端口转发在服务器上似乎工作正常。

我的sshd配置文件包含以下两行:

# Port forwarding
AllowTcpForwarding yes

# If port forwarding is enabled, specify if the server can bind to INADDR_ANY.
# This allows the local port forwarding to work when connections are received
# from any remote host.
GatewayPorts yes

我正在尝试为另一个进程而不是Tomcat设置端口转发,并且收到与上述内容类似的错误消息,因此我试图了解错误消息的含义。

Answers:


21

SSH协议文档中,有关渠道:

所有终端会话,转发的连接等都是通道。任何一方都可以打开通道。多个通道被多路复用为单个连接。

频道由两端的数字标识。引用通道的数字在每一侧可能会有所不同。打开频道的请求包含发送者的频道号。任何其他与频道相关的消息都包含该频道的收件人的频道号。

通道是流量控制的。在接收到指示窗口空间可用的消息之前,不得将任何数据发送到通道。

转发端口

您拥有的命令看起来不错。您确定要尝试连接的服务已启动并且正在接受连接吗?通道错误似乎表明并非如此。

我的活跃频道是什么?

如果您有活动的ssh连接,则可以使用以下组合键获得帮助:

Shift+ ~然后Shift+?

$ ~?
Supported escape sequences:
  ~.  - terminate connection (and any multiplexed sessions)
  ~B  - send a BREAK to the remote system
  ~C  - open a command line
  ~R  - Request rekey (SSH protocol 2 only)
  ~^Z - suspend ssh
  ~#  - list forwarded connections
  ~&  - background ssh (when waiting for connections to terminate)
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
debug2: channel 2: written 480 to efd 8

然后,您可以使用此组合键获取活动频道的列表:

Shift+ ~然后Shift+#

$ ~#
The following connections are open:
  #2 client-session (t4 r0 i0/0 o0/0 fd 6/7 cc -1)
debug2: channel 2: written 93 to efd 8

4

如果tomcat没有在环回(127.0.0.1)上进行侦听,则转发至该端口的端口将给出您已收到的错误消息。

如果我执行ssh,并且端口转发到非监听端口(例如:ssh -L1234:127.0.0.1:9999 10.0.0.1-在10.0.0.1上没有进程绑定到127.0.0.1上的端口9999),则会出现相同的错误:

channel 2: open failed: administratively prohibited: open failed

您可以通过添加-vvv到ssh 来找出要引用的频道

ssh -vvv -L1570:127.0.0.1:8899 root@thehost

正在监听的“其他进程”在哪个端口上(以及在哪个IP地址上),netstat -tulpn将确认服务器上正在使用的端口和IP进程,-L将必须指向它正在监听的地址和端口。


我无法复制以上内容。您是否在客户端和/或服务器中启用ssh参数以获取此信息?
slm

不,(标准的“开箱即用”配置在两侧)。据我所知,connect failed: Connection refused当防火墙拒绝连接时,您会明白。 administratively prohibited: open failed在没有防火墙的主机上。
Drav Sloan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.