Вопрос или проблема
Что может вызывать сбой переадресации порта SSH?
Я настраиваю syncthing
на своем NAS qnap и сейчас нахожусь на этапе, когда хочу перенаправить GUI NAS на мой ноутбук, который находится в той же сети. GUI доступен на NAS на порту 8384
:
[~] # nc -zv 127.0.0.1 8384
localhost [127.0.0.1] 8384 (?) открыт
Теперь, чтобы получить доступ к этой службе с ноутбука, я использую
ssh -p 50022 -L 9090:127.0.0.1:8384 admin@nasipaddress -v
, как описано здесь (-v
добавлен для отладки). Сделав это, и затем получив доступ к 127.0.0.1:9090 в браузере моего ноутбука, я получаю следующее сообщение об ошибке в терминале (терминал на NAS, который был открыт с помощью команды ssh
выше):
[~] # debug1: Connection to port 9090 forwarding to 127.0.0.1 port 8384 requested.
debug1: channel 3: new [direct-tcpip]
channel 3: open failed: administratively prohibited: open failed
debug1: channel 3: free: direct-tcpip: listening port 9090 for 127.0.0.1 port 8384, connect from 127.0.0.1 port 36462 to 127.0.0.1 port 9090, nchannels 4
Это сообщение повторяется 10 раз, каждый раз увеличивая порт 36462
на 2
. Administratively prohibited
похоже указывает на то, что это какая-то настройка, я бы предположил, что на самом NAS, и я собираюсь разобраться в этом. Я также не уверен, откуда берется используемый порт (36462
).
В sshd_config
я установил AllowTcpForwarding
на yes
, а PermitOpen
отсутствует, согласно этому вопросу, и я добавил PermitTunnel yes
согласно этому посту. Мой полный sshd_config
:
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
PermitRootLogin yes
UseDNS no
Subsystem sftp /usr/libexec/sftp-server
AllowTcpForwarding yes
AllowUsers admin
PermitTunnel yes
Я перезапустил демон ssh после изменения конфигурации.
Я использую авторизованные ключи, и все строки в .ssh/authorized_keys
состоят из ssh-rsa l0ngcrpt0grAph1cK3Y descriptive name
редактировать:
Я переписал вопрос, чтобы отразить новую информацию.
Вы уверены, что sshd
на NAS был перезапущен после редактирования его файла sshd_config
? Если нет, он мог по-прежнему использовать старые настройки.
У NAS может быть программный файрвол, который отвечает на попытки подключения с 127.0.0.1 на порт 8384 с ошибкой ICMP “Administratively prohibited”, или само приложение на порту 8384 может делать то же самое.
Или sshd
на устройстве NAS мог быть скомпилирован без возможности перенаправления портов, что приводит к тому, что он отвечает “administratively prohibited” на попытки перенаправления портов, независимо от того, что вы укажете в его файле sshd_config
.
Изначально редактирование вопроса:
Оказывается, изменения в sshd_config
на NAS qnap отменяются при перезапуске демона ssh. Да, я знаю. Таким образом, единственный способ гарантировать, что строка AllowTcpForwarding yes
сохранится, это добавить ее другим способом, как так:
setcfg LOGIN "SSH AllowTcpForwarding" TRUE
Это действительно сохраняется после перезапуска sshd и перезагрузки системы.
Ответ или решение
Проблема с неудачей перенаправления порта SSH может возникнуть по нескольким причинам. Рассмотрим основные из них и возможные решения.
-
Настройки конфигурации SSH:
- Первым делом убедитесь, что в файле конфигурации
sshd_config
на вашем NAS действительно указаноAllowTcpForwarding yes
. Однако, как вы уже заметили, у QNAP могут быть особенности: изменения вsshd_config
могут не сохраняться после перезапуска демона SSH. Чтобы это исправить, используйте команду:setcfg LOGIN "SSH AllowTcpForwarding" TRUE
Это гарантирует, что настройки будут сохранены и после перезагрузки.
- Первым делом убедитесь, что в файле конфигурации
-
Перезапуск SSH-демона:
- Убедитесь, что вы действительно перезапустили демона SSH после внесения изменений в конфигурацию. Выполните команду:
/etc/init.d/sshd restart
или аналогичную для вашего устройства.
- Убедитесь, что вы действительно перезапустили демона SSH после внесения изменений в конфигурацию. Выполните команду:
-
Файрволл:
- Проверьте настройки межсетевого экрана (фаервола) на NAS. Иногда может быть установлен фаервол, который блокирует ожидания на определенные порты или ограничивает доступ к ним. Убедитесь, что правила фаервола не блокируют подключение к порту 8384.
-
Проблемы с приложением:
- Возможна ситуация, когда приложение, прослушивающее на порту 8384 (в данном случае Syncthing), имеет свои внутренние ограничения или блокировки. Убедитесь, что оно настроено правильно для приема соединений.
-
Проверка версии SSH:
- Убедитесь, что версия SSH на вашем NAS поддерживает перенаправление портов. Иногда старые или специализированные сборки
sshd
могут не поддерживать эту функцию.
- Убедитесь, что версия SSH на вашем NAS поддерживает перенаправление портов. Иногда старые или специализированные сборки
-
Проверка логов:
- Изучите логи SSH для получения дополнительной информации о том, почему происходит ошибка. Вы можете найти логи с помощью:
tail -f /var/log/auth.log
или соответствующего пути на вашем устройстве.
- Изучите логи SSH для получения дополнительной информации о том, почему происходит ошибка. Вы можете найти логи с помощью:
- Проверка локального подключения:
- Убедитесь, что ваш NAS может принимать подключения к порту 8384 с локального интерфейса. Попробуйте выполнить команды вроде
nc
илиcurl
непосредственно на самом NAS:nc -zv localhost 8384
- Убедитесь, что ваш NAS может принимать подключения к порту 8384 с локального интерфейса. Попробуйте выполнить команды вроде
Если вы проверили все вышеперечисленные аспекты и все еще сталкиваетесь с проблемой, попробуйте перезагрузить NAS и повторить попытку. Все вышеперечисленные шаги должны помочь вам устранить проблему обхода SSH.