Что означают номера каналов в сообщении об ошибке 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, и я получаю сообщения об ошибках, аналогичные описанным выше, поэтому я пытаюсь понять смысл сообщений об ошибках.

Ответы:


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 не прослушивает loopback (127.0.0.1), то переадресация на этот порт выдаст сообщение об ошибке, которое вы получили.

Если я делаю ssh, с портом, перенаправленным на не слушающий порт (например: ssh -L1234:127.0.0.1:9999 10.0.0.1- где никакой процесс на 10.0.0.1 не связан с портом 9999 на 127.0.0.1), я получаю ту же ошибку:

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находится на хосте без брандмауэра.
Драв Слоан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.