A cosa si riferiscono i numeri dei canali nel messaggio di errore ssh?


12

Nell'esempio seguente a cosa corrispondono i numeri dei canali? Quali sono sul server? Quali sono sul client?

  $ 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

Il client SSH è in esecuzione su Windows 7 e il server ha un server Tomcat in esecuzione sulla porta 8899.

Tomcat non è in ascolto su 127.0.0.1 sul computer remoto, quindi se cambio il comando ssh -L1570:thehostpublicip:8899 root@thehostsul port forward funziona. Quindi so che il port forwarding sembra funzionare bene sul server.

il mio file di configurazione sshd contiene le seguenti due righe:

# 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

Sto provando a configurare il port forwarding per un altro processo non Tomcat e ricevo i messaggi di errore simili alle cose sopra, quindi sto cercando di capire il significato dei messaggi di errore.

Risposte:


21

Dalla documentazione del protocollo SSH , relativa ai canali:

Tutte le sessioni del terminale, le connessioni inoltrate, ecc., Sono canali. Entrambe le parti possono aprire un canale. Più canali sono multiplexati in una singola connessione.

I canali sono identificati da numeri a ciascuna estremità. Il numero riferito a un canale può essere diverso su ciascun lato. Le richieste di apertura di un canale contengono il numero di canale del mittente. Qualsiasi altro messaggio relativo al canale contiene il numero del canale del destinatario per il canale.

I canali sono controllati dal flusso. Nessun dato può essere inviato a un canale fino a quando non viene ricevuto un messaggio per indicare che lo spazio della finestra è disponibile.

Port forwarding

Il comando che hai sembra a posto. Sei sicuro che il servizio a cui stai tentando di connetterti sia attivo e accetti connessioni? Gli errori del canale sembrano indicare che non lo è.

Quali sono i miei canali attivi?

Se si dispone di una sshconnessione attiva , è possibile utilizzare la seguente combinazione di tasti per ottenere assistenza:

Shift+ ~seguito da 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

È quindi possibile utilizzare questa combinazione di tasti per ottenere un elenco dei canali attivi:

Shift+ ~seguito da 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

Se tomcat non è in ascolto su loopback (127.0.0.1), una porta in avanti fornirà il messaggio di errore che hai ricevuto.

Se eseguo un ssh, con una porta in avanti verso una porta non in ascolto (ad esempio: ssh -L1234:127.0.0.1:9999 10.0.0.1- dove nessun processo su 10.0.0.1 è associato alla porta 9999 su 127.0.0.1), ottengo lo stesso errore:

channel 2: open failed: administratively prohibited: open failed

Puoi scoprire a quale canale viene fatto riferimento aggiungendo -vvval tuo ssh

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

Su quale porta è "l'altro processo" in ascolto (e su quali indirizzi IP), netstat -tulpnconfermerà quali porte e processi IP sono in uso sui server, la -L dovrà puntare a un indirizzo e porta su cui è in ascolto.


Non riesco a riprodurre quanto sopra. Stai abilitando i parametri ssh nel client e / o nel server per ottenere questo?
slm

No (configurazioni standard "out of the box" su entrambi i lati). Per quanto posso capire, si ottiene connect failed: Connection refusedquando un firewall nega la connessione. administratively prohibited: open failedè su un host senza firewall.
Drav Sloan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.