O que os números de canal na mensagem de erro ssh se referem?

12

No exemplo abaixo, a que correspondem os números de canal? Quais estão no servidor? Quais estão no cliente?

  $ 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

O cliente ssh está sendo executado no Windows 7 e o servidor tem um servidor Tomcat em execução na porta 8899.

O Tomcat não está escutando em 127.0.0.1 na máquina remota, portanto, se eu alterar o comando para ssh -L1570:thehostpublicip:8899 root@thehost , o encaminhamento de porta funcionará. Então eu sei que o encaminhamento de porta parece estar funcionando bem no servidor.

meu arquivo de configuração sshd contém as seguintes duas linhas:

# 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

Estou tentando configurar o encaminhamento de porta para outro processo, não o Tomcat, e recebo as mensagens de erro semelhantes às descritas acima, por isso estou tentando entender o significado das mensagens de erro.

    
por ams 09.08.2013 / 20:07

2 respostas

21

Na documentação do protocolo SSH , referente aos canais:

All terminal sessions, forwarded connections, etc., are channels. Either side may open a channel. Multiple channels are multiplexed into a single connection.

Channels are identified by numbers at each end. The number referring to a channel may be different on each side. Requests to open a channel contain the sender's channel number. Any other channel related messages contain the recipient's channel number for the channel.

Channels are flow-controlled. No data may be sent to a channel until a message is received to indicate that window space is available.

Encaminhamento de porta

O comando que você tem parece bem. Você tem certeza de que o serviço ao qual está tentando se conectar está funcionando e aceitando conexões? Os erros do canal parecem indicar que não é.

Quais são os meus canais ativos?

Se você tiver uma conexão ssh ativa, use a seguinte combinação de teclas para obter ajuda:

Shift + ~ seguido por 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

Você pode usar essa combinação de teclas para obter uma lista dos canais ativos:

Shift + ~ seguido por 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
    
por 09.08.2013 / 20:20
4

Se o tomcat não estiver ouvindo em loopback (127.0.0.1), uma porta encaminhará a mensagem de erro que você está recebendo.

Se eu fizer um ssh, com uma porta em frente a uma porta sem escuta (por exemplo: ssh -L1234:127.0.0.1:9999 10.0.0.1 - onde nenhum processo em 10.0.0.1 está vinculado à porta 9999 em 127.0.0.1), recebo o mesmo erro:

channel 2: open failed: administratively prohibited: open failed

Você pode descobrir qual canal está sendo chamado, adicionando -vvv ao seu ssh

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

Em qual porta o "outro processo" está escutando (e em quais endereços IP), netstat -tulpn irá confirmar quais portas e IPs estão sendo processados em seus servidores, o -L terá que apontar para um endereço e portá-lo está escutando.

    
por 09.08.2013 / 20:21