странный вывод по ssh-туннелированию: выход не выполнен; ошибка подключения: истекло время соединения;

18

Я использую ssh user@xx.yy.zz.41 -p 1234 -D 9898команду для туннелирования, и я устанавливаю firefox socks5 ip на 127.0.0.1 и его порт на 9898. Он успешно работает, но в терминале у меня ошибка в выводе:

channel 39: open failed: connect failed: Connection timed out
channel 41: open failed: connect failed: Connection timed out
channel 42: open failed: connect failed: Connection timed out
channel 43: open failed: connect failed: Connection timed out
channel 44: open failed: connect failed: Connection timed out

Это происходит периодически. Что это? Это проблема? Что я могу сделать?

Араш Мусави
источник

Ответы:

21

У меня были похожие проблемы. Если вы туннелируете с Firefox через ssh, некоторые http-соединения могут просто прерваться из-за загрузки сервера или неправильной конфигурации. Когда на самом деле истекает время ожидания соединения, вы получите сообщение об ошибке, подобное указанному вами.

Вы можете подавить эти сообщения с помощью следующей команды

ssh user@xx.yy.zz.41 -p 1234 -D 9898 -q

Со страницы руководства ssh(1)

 -q      Quiet mode.  Causes most warning and diagnostic messages to be sup-
         pressed.

Подавление сообщения будет препятствовать тому, чтобы предупреждения испортили ваши сеансы SSH или экрана.

Gordolio
источник
Спасибо, это решение отлично работает! Один вопрос: этот тайм-аут возникает периодически, даже когда все процессы браузера закрыты. Я пытаюсь определить, что вызывает тайм-аут и куда отправляется запрос. какие-либо предложения о том, как отобразить более подробную информацию об ошибках для туннеля SSH?
gnarbarian
3

Установите GatewayPortsдля yesи повторите попытку.

ssh -o 'GatewayPorts yes' user@xx.yy.zz.41 -p 1234 -D 9898

man ssh_config

 DynamicForward
         Specifies that a TCP port on the local machine be forwarded over the secure channel, and the application protocol
         is then used to determine where to connect to from the remote machine.

         The argument must be [bind_address:]port.  IPv6 addresses can be specified by enclosing addresses in square
         brackets.  By default, the local port is bound in accordance with the GatewayPorts setting.  However, an explicit
         bind_address may be used to bind the connection to a specific address.  The bind_address of “localhost” indicates
         that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should
         be available from all interfaces.

         Currently the SOCKS4 and SOCKS5 protocols are supported, and ssh(1) will act as a SOCKS server.  Multiple for‐
         wardings may be specified, and additional forwardings can be given on the command line.  Only the superuser can
         forward privileged ports.

 GatewayPorts
         Specifies whether remote hosts are allowed to connect to local forwarded ports.  By default, ssh(1) binds local
         port forwardings to the loopback address.  This prevents other remote hosts from connecting to forwarded ports.
         GatewayPorts can be used to specify that ssh should bind local port forwardings to the wildcard address, thus
         allowing remote hosts to connect to forwarded ports.  The argument must be “yes” or “no”.  The default is “no”.
кванты
источник
1
Я использую -o 'GatewayPorts yes', но эта ошибка возникла снова.
Араш Мусави
GatewayPorts это не проблема. Порты шлюза позволяют серверу ssh прослушивать нелокальные порты. GatewayPorts становится очень полезным при выполнении обратного туннеля - позволяет хостам из частной сети подключаться обратно к вашему хосту клиента ssh. Gordolio имеет это прямо выше: сервер SOCKS, запущенный локальным ssh, жалуется, что не может достичь хоста / порта, запрошенного пользователями клиентов SOCKS (как в примере Gordolio, Firefox).
Марк