Возможен внутренний ssh, но не внешний

Возможен внутренний ssh, но не внешний

У меня есть маршрутизатор/модем Netgear C6300 (версия прошивки 2.01.14), и я пытаюсь изо всех сил подключиться по ssh к своему Raspberry Pi извне. Вот моя настройка переадресации портов: введите описание изображения здесь

Я могу подключиться по ssh изнутри, используя ssh 192.168.0.84, но извне на canyouseeme.com я получаю сообщение «Ошибка: не удалось увидеть вашу службу на порту (22)». В моем sshd_config есть строка, Port 22и ListenAddressстроки закомментированы. Другими словами, я не трогал этот файл. Что здесь происходит?

решение1

Мне на ум приходит несколько вещей.

Переадресация на вашем скриншоте выглядит нормально. Вы можете попробовать установить ее на TCPвместо TCP/UDP, поскольку ssh — это протокол TCP.

dyndns

Вы уверены, что используете правильное динамически обновляемое имя хоста или правильный публичный IP-адрес? Чтобы узнать публичный IP-адрес, откройте консоль на Raspberry или SSH (внутренне) и используйте curl icanhazip.com.

sshd_config

Убедитесь, что в /etc/ssh/sshd_config, что sshd слушает правильный интерфейс, если у вас их несколько. Закомментируйте строку ListenAddress a.b.c.dс помощью #и перезапустите службу ( /etc/init.d/sshd restartили systemctl restart sshd, в зависимости от вашего дистрибутива). Редактировать: извините, вы уже это сказали.

Редактировать:

маршрутизация

Если вы не можете получить выход из curl icanhazip.com, скорее всего, ваш Raspberry не знает, как получить доступ к Интернету. Поэтому он не может ответить на вашу попытку подключения извне. Добавьте маршрут, например, с помощью ip route add default via <your modem's IP address>и попробуйте еще раз.

iptables

Убедитесь, что ваш внутренний брандмауэр Raspberry разрешает SSH с внешних адресов. iptables -Sпредоставит вам список правил. Найдите строки типа

-A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
# SSH only allowed from the internal network, if iptables policy INPUT is DROP

В этом случае разрешите весь входящий трафик с помощью iptables -P INPUT ACCEPTили iptables -I INPUT -p tcp --dport 22 -j ACCEPT.

DS-Lite (двойной стек Lite)

Внутри вашей домашней сети вы используете адреса IPv4. В вашем примере 192.168.0.x. Однако ваш интернет-провайдер может использовать IPv6 в своей сети. Маршрутизатор преобразует ваши адреса IPv4 в IPv6. Это обычно приводит к невозможности подключения к вашей домашней сети из удаленного доступа.

Если curl icanhazip.comвам дали IPv6-адрес, например 2001:a61::35:2, это может быть индикатором. Также, возможно, ваш C6300 покажет информацию об этом. (Я использую AVM Fritz!Box 7360, и он явно выводит "Fritz!Box использует туннель DS-Lite").

Чтобы быть на 100% уверенным, позвоните своему интернет-провайдеру.

Редактировать:

Если вы находитесь за туннелем DS-Lite, вам на ум приходят следующие варианты, позволяющие подключиться к дому удаленно:

  • попросите своего провайдера/интернет-провайдера переключить вашу линию на линию без DS-Lite
  • используйте autosshдля подключения вашего домашнего компьютера к другому хосту, например, на работе (предварительно спросите своего работодателя), вашему веб-серверу, вашему VPS. Настройте autosshтак, чтобы он создавал обратный туннель, например . Затем вы можете подключиться по ssh к yourvps.com и оттуда по ssh вернуться домой через .ssh -R 10000:localhost:22 [email protected]ssh -p 10000 user@localhost

Редактировать:

Netgear C6300 специфичен

Похоже, в прошивках до версии прошивки 2.01.14 есть ошибка, из-за которой открытые порты будут видны только в том случае, если в разделе «Расширенная конфигурация» > «Настройка WAN» активирована опция «Отвечать на команду Ping на порте WAN в Интернете».

Настройка WAN Netgear C6300

Связанный контент