туннельные соединения отказа ssh с “каналом 2: открытый отказавший”

Да, с блокировкой уровня строки однако я не уверен, подходит ли этот вопрос для SF или должен быть перемещен в ТАК? Походит на вещь архитектуры приложения, независимо от базовой установки и/или аппаратных средств.

72
задан 19 March 2013 в 11:32
14 ответов

Проблема решена:

$ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v

... очевидно, ' localhost 'не понравился удаленному хосту. Тем не менее, удаленный / etc / hosts содержит:

::1                     localhost localhost.
127.0.0.1               localhost localhost.

, а локальный сетевой интерфейс -

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33184
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2

Sigh. столько за вознаграждение в 100 рупий я надел :)

42
ответ дан 28 November 2019 в 19:28

Сначала я попробую это.

$ ssh -L 7000:127.0.0.1:7000 user@host -N -v -v

Вы можете использовать «-v» до 3 раз, чтобы увеличить подробность.

Я думаю, что это сообщение об ошибке может возникнуть если брандмауэр блокирует порт 7000, но вы это уже исключили. (Если более поздние читатели не исключили этого, посмотрите на вывод netstat --numeric-ports .)

Я думаю Я мог долго видеть это сообщение об ошибке некоторое время назад, когда ssh впервые узнал об адресах IPV6 после обновления. Я могу ошибаться в этом. Если вы хотите поэкспериментировать, вы можете попробовать адрес обратной связи IPV6 «0: 0: 0: 0: 0: 0: 0: 1» (или «:: 1»).

9
ответ дан 28 November 2019 в 19:28

???

канал 2: сбой при открытии: сбой подключения: отказ в подключении

В user @ host нет ничего, что прослушивает порт 7000, это просто, и это все.

1
ответ дан 28 November 2019 в 19:28

"... очевидно, 'localhost' не понравился удаленному хосту. Тем не менее, удаленный / etc / hosts содержит:"

За исключением того, что вы запускали ssh на клиенте, поэтому «localhost» не понравился вашему клиенту. Файл удаленного / etc / hosts предназначен для удаленного подключения из , а не для входящих подключений.

3
ответ дан 28 November 2019 в 19:28

Хотя проблема OP уже решена, я решил поделиться решением моей проблемы, потому что я получил такое же сообщение об ошибке от ssh и не нашел решения на других сайтах.

В моем случае мне пришлось подключиться к службе, которая прослушивает только IPv6. Я пробовал:

ssh -f root@192.168.0.18 -L 51005:127.0.0.1:51005 -N
ssh -f root@192.168.0.18 -L 51005:localhost:51005 -N

и несколько других способов, но это не сработало. Любая попытка подключения к http: // localhost: 51005 вызывает такие ошибки: канал 2: ошибка открытия: ошибка подключения: соединение отклонено

Решение:

ssh -f root@192.168.0.18 -L 51005:[::1]:51005 -N

IPv6-адрес должен быть в квадратных скобках.

21
ответ дан 28 November 2019 в 19:28

Я столкнулся с этой же ошибкой при попытке подключиться к mysql на другом сервере через ssh туннель. Я обнаружил, что параметр bind-address находится в /etc/my.cnf на целевом сервере был привязан к моему внешнему ip (серверу с двойной сетевой картой), а не к внутреннему, который мне не нужен.

Когда я установил адрес bind-address=127.0.0. 1, я мог успешно использовать свой ssh туннель следующим образом:

ssh -N -f -L 3307:127.0.0.1:3306 user@server.name

mysql -h 127.0.0.1 --port=3307 --protocol=TCP -uusername -ppassword
3
ответ дан 28 November 2019 в 19:28

Я столкнулся с этой ошибкой, когда переадресовывал порты с полным доменным именем вместо localhost:

ssh -L 5900:host.name.com:5900 x11vnc

Порт открывался только для localhost, поэтому, чтобы принять соединения с полным именем, мне пришлось добавить связывающий порт описание:

ssh -L *:5900:host.name.com:5900 x11vnc

, который позволял бы соединяться откуда угодно (поэтому он не настолько безопасен, используйте его экономно)

.
3
ответ дан 28 November 2019 в 19:28

Для меня добавление ":" работает, поэтому команда в вашем случае будет выглядеть так:

ssh -L :7000:localhost:7000 user@host -N -v
2
ответ дан 28 November 2019 в 19:28

Я получил такое же сообщение об ошибке:

канал 3: open failure: connect failure: Соединение отказало

И причиной была человеческая ошибка - я пытался получить доступ к другому порту на удаленном хосте, чем тот, который я указал.

Просто подумал, что поделюсь этим, хотя, наверное, это не является причиной, по которой большинство из вас испытывают эту ошибку.

1
ответ дан 28 November 2019 в 19:28

Я пробовал ssh -L <порт>: : <порт> @ , когда мне нужно делали ssh -L : 127.0.0.1: @ .

Надеюсь, это кому-то поможет!

1
ответ дан 28 November 2019 в 19:28

Альтернативная интерпретация: в моем случае, вы неправильно набрали.

user@host ~ $ ssh -vvvNL 4444:127.0.0.0.1:4444
...
channel 2: open failed: connect failed: Name or service not known

Здесь происходит то, что в IP-адресе слишком много нулей, поэтому он недействителен. Поэтому ssh рассматривает его как доменное имя, которое не может разрешить. Упс!

PS: Я дополняю это, чтобы у нас был полный список возможных проблем при устранении тех же симптомов.

1
ответ дан 28 November 2019 в 19:28

Отсутствует IP-адрес - ip = nnnn в конце строки. Вы должны указать, с каким именно IP подключаться.

0
ответ дан 30 November 2019 в 12:30

У меня сработало переключение порядка команд.

Итак, в основном -

$ ssh user @ host -L 7000: localhost: 7000 -N

Странно

0
ответ дан 1 December 2019 в 02:29

В интересах тех, кто совершил такую ​​глупую ошибку, как я (ошибку, не упомянутую в других ответах):Убедитесь, что на вашей удаленной машине действительно есть процесс, прослушивающий порт, который вы пытаетесь тоннель к!

Как говорит @Kenster здесь:

Когда вы подключаетесь к порту 8783 в вашей локальной системе, это соединение туннелируется через вашу ссылку ssh на сервер ssh на server.com. Оттуда сервер ssh устанавливает TCP-соединение с локальным портом 8783 и передает данные между туннельным соединением и соединением с целью туннеля. Ошибка «отказ в соединении» исходит от ssh-сервера на server.com, когда он пытается установить TCP-соединение с целью туннеля. «Соединение отклонено» означает, что попытка соединения была отклонена. Самое простое объяснение отказа состоит в том, что на сервере server.com ничто не прослушивает соединения через порт 8783 локального хоста. Другими словами, серверное программное обеспечение, к которому вы пытались туннелировать, не запущено или запущено, но не работает. не слушает этот порт.

Итак, сначала убедитесь, что ваш удаленный процесс запущен, а затем убедитесь, что он действительно прослушивает порт, к которому вы пытаетесь подключиться.

На своем удаленном компьютере вы можете запустить любой из этих (в зависимости от пакетов, доступных в вашем дистрибутиве), чтобы проверить, какие порты прослушиваются:

sudo lsof -i -P -n | grep LISTEN
sudo netstat -tulpn | grep LISTEN
sudo ss -tulpn | grep LISTEN

Если ваша команда ssh -L -N 7000:127.0.0.1:6000 user@host, и вы можете' Если вы не видите ничего прослушивающего на 6000, то это ваша проблема -вам нужно выяснить, почему процесс не прослушивает порт или порт, который вы ожидаете.

0
ответ дан 7 September 2021 в 02:31

Теги

Похожие вопросы