Может ssh внутренне, но не внешне

2

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

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

ocket8888
источник
Примечание: это абсолютно дубликат superuser.com/questions/1019256/… но этому вопросу 5 месяцев без ответа, поэтому я спрашиваю снова.
ocket8888

Ответы:

2

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

Переадресация на вашем скриншоте выглядит хорошо. Вы можете попытаться установить его 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Например 2001:a61::35:2, если вам дали адрес IPv6, это может быть индикатором. Также, возможно, ваш C6300 покажет информацию об этом. (Я использую AVM Fritz! Box 7360, и он явно выдает «Fritz! Box использует туннель DS-Lite»).

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

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

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

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

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

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

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

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

stueja
источник
Мой iptables -Sвывод просто -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT, поэтому я запустил, iptables -I INPUT -p tcp --dport 22 -j ACCEPTкак вы предложили, и в то время как curlкоманда выводила адрес IPv6, использование не имело никакого значения. Я установил протокол в моей переадресации портов на TCP, но ping.eu/port-chk все еще говорит мне, что порт закрыт.
ocket8888
ХОРОШО. Ну, если бы все политики ( -P) уже были установлены ACCEPT, разницы не было. Если curlвыводит адрес IPv6, то, скорее всего, вы используете стек DS-Lite. Или лучше ваш провайдер. Пожалуйста, посмотрите на их веб-страницу, форумы клиентов или позвоните им, чтобы быть на 100% уверенными. В этом случае может быть трудно получить соединение с удаленного на дом. Вы можете арендовать VPS с общедоступным IP-адресом и использовать autosshRaspberry, чтобы вы могли перейти с VPS на Raspberry дома.
stueja
хмурится, должен быть способ, которым я могу использовать открытую услугу для подключения к машине, которой я владею, через интернет-соединение, за которое я уже заплатил, не арендуя ничего У моего бывшего соседа по дому был файловый сервер, с тех пор мы сменили маршрутизаторы, но не интернет-провайдеров, поэтому это должно быть возможно, потому что мы делали это раньше.
ocket8888
Это новая информация! Как давно ваш сосед по дому запускал файловый сервер? Что это за файловый сервер? Какие порты использовал файловый сервер? Можете ли вы попытаться заставить SSH прослушивать другой порт, например, 80 или 443, переадресовать порт в маршрутизаторе и повторить попытку?
stueja
Вы активировали «ответить на ping через порт WAN в Интернете» в «Настройках»> «Настройка WAN» в Расширенной конфигурации?
stueja