Что может вызывать сбой переадресации порта SSH?

Вопрос или проблема

Что может вызывать сбой переадресации порта 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 может возникнуть по нескольким причинам. Рассмотрим основные из них и возможные решения.

  1. Настройки конфигурации SSH:

    • Первым делом убедитесь, что в файле конфигурации sshd_config на вашем NAS действительно указано AllowTcpForwarding yes. Однако, как вы уже заметили, у QNAP могут быть особенности: изменения в sshd_config могут не сохраняться после перезапуска демона SSH. Чтобы это исправить, используйте команду:
      setcfg LOGIN "SSH AllowTcpForwarding" TRUE

      Это гарантирует, что настройки будут сохранены и после перезагрузки.

  2. Перезапуск SSH-демона:

    • Убедитесь, что вы действительно перезапустили демона SSH после внесения изменений в конфигурацию. Выполните команду:
      /etc/init.d/sshd restart

      или аналогичную для вашего устройства.

  3. Файрволл:

    • Проверьте настройки межсетевого экрана (фаервола) на NAS. Иногда может быть установлен фаервол, который блокирует ожидания на определенные порты или ограничивает доступ к ним. Убедитесь, что правила фаервола не блокируют подключение к порту 8384.
  4. Проблемы с приложением:

    • Возможна ситуация, когда приложение, прослушивающее на порту 8384 (в данном случае Syncthing), имеет свои внутренние ограничения или блокировки. Убедитесь, что оно настроено правильно для приема соединений.
  5. Проверка версии SSH:

    • Убедитесь, что версия SSH на вашем NAS поддерживает перенаправление портов. Иногда старые или специализированные сборки sshd могут не поддерживать эту функцию.
  6. Проверка логов:

    • Изучите логи SSH для получения дополнительной информации о том, почему происходит ошибка. Вы можете найти логи с помощью:
      tail -f /var/log/auth.log

      или соответствующего пути на вашем устройстве.

  7. Проверка локального подключения:
    • Убедитесь, что ваш NAS может принимать подключения к порту 8384 с локального интерфейса. Попробуйте выполнить команды вроде nc или curl непосредственно на самом NAS:
      nc -zv localhost 8384

Если вы проверили все вышеперечисленные аспекты и все еще сталкиваетесь с проблемой, попробуйте перезагрузить NAS и повторить попытку. Все вышеперечисленные шаги должны помочь вам устранить проблему обхода SSH.

Оцените материал
Добавить комментарий

Капча загружается...