7

У меня дома рабочий стол Ubuntu и ноутбук Mac. Я пытаюсь настроить это так, чтобы я мог SSH на моем компьютере с Ubuntu из-за пределов моей локальной сети.

Вот что я сделал до сих пор:

(1) Я включил SSH на порту 22 на моей машине с Ubuntu. Файл /etc /ssh /sshd_config говорит, что прослушивает порт 22.

(2) Если я смотрю на состояние моего брандмауэра (ufw status), он говорит:

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                  
22 (v6)                    ALLOW       Anywhere (v6)             

(3) На моем маршрутизаторе Netgear C3700-100NAS я зарезервировал IP-адрес для своего компьютера с Ubuntu, чтобы он не изменился.

(4) Я настроил переадресацию портов с типом службы TCP/UDP, внешним и внутренним портами, установленным на 22, и он указывает на мой внутренний IP-адрес.

(5) Я нашел свой публичный IP-адрес с помощью http://www.myipaddress.com/

Я могу успешно подключиться по ssh к моей машине с Ubuntu из дома, в локальной сети, используя локальный IP-адрес.

Но время удаленного ssh истекло. Я также попробовал онлайн-тестер переадресации портов (https://www.yougetsignal.com/tools/open-ports/), и когда я указываю на мой публичный IP-адрес и порт 22, он сообщает, что порт закрыт.

Когда я пытаюсь удаленно SSH, я получаю следующее:

~ $ ssh -vvv myusername@xx.xxx.xxx.xx
OpenSSH_7.4p1, LibreSSL 2.5.0
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolving "xx.xxx.xxx.xx" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to xx.xxx.xxx.xx [xx.xxx.xxx.xx] port 22.
debug1: connect to address xx.xxx.xxx.xx port 22: Operation timed out
ssh: connect to host xx.xxx.xxx.xx port 22: Operation timed out

ОБНОВЛЕНИЕ

Следуя советам, перечисленным ниже, я внес несколько изменений. Я изменил переадресацию портов, чтобы теперь он использовал порт 8022 в качестве внешнего порта, но все равно порт 22 в качестве внутреннего порта. Я также включил опцию в настройках своего роутера, чтобы он отвечал на пинги.

Теперь, если я пингую свой публичный IP, он отвечает. Однако, если я проверяю, открыт ли порт 8022 через веб-сайт yougetsignal, указанный выше, он все равно говорит, что он закрыт.

Если я попытаюсь SSH:

> ssh -vvv username@xx.xxx.xxx.xx -p 8022
OpenSSH_7.4p1, LibreSSL 2.5.0
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolving "xx.xxx.xxx.xx" port 8022
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to xx.xxx.xxx.xx [xx.xxx.xxx.xx] port 8022.
debug1: connect to address xx.xxx.xxx.xx port 8022: Operation timed out
ssh: connect to host xx.xxx.xxx.xx port 8022: Operation timed out

Я также позвонил своему интернет-провайдеру, и хотя это был сбивающий с толку разговор, похоже, они не блокировали порты, которые я пытался использовать ...

Следуя предложенному ниже предложению, я запустил sudo nmap --packet-trace --traceroute --reason xx.xxx.xxx.xx Вот подмножество вывода. Порт 8022 не указан, но я думаю, что это должно быть:

Host is up, received reset ttl 253 (0.0028s latency).
Not shown: 996 filtered ports
Reason: 996 no-responses
PORT     STATE  SERVICE      REASON
135/tcp  closed msrpc        reset ttl 253
139/tcp  closed netbios-ssn  reset ttl 253
445/tcp  closed microsoft-ds reset ttl 253
1025/tcp closed NFS-or-IIS   reset ttl 253

Я не уверен, где проблема ... машина Ubuntu? роутер? Есть идеи, как это выяснить?

Спасибо!

4 ответа4

1

У меня была похожая проблема несколько дней назад. Возможно, ваш модем или маршрутизатор не настроен в качестве моста. Это зависит от провайдера. В обычном режиме он блокирует все входящие соединения, но переключение его в режим моста дает полный доступ. Мне пришлось позвонить своему интернет-провайдеру, чтобы изменить это, чтобы у меня был публичный IP-адрес (точно не фиксированный в течение длительного времени, но этого достаточно для меня), и теперь мой маршрутизатор работает как мост для всех соединений.

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

0

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

Не могли бы вы попробовать еще раз и перенести порт с 8022 на 443?

Иногда у некоторых интернет-провайдеров может быть очень ограниченная фильтрация портов. Но 443 часто держат без фильтра. Также порты выше 10000 могут иметь больше шансов, но я вижу из вашего nmap, что вы можете достичь 445 или около того: вы делали nmap из-за пределов вашей локальной сети? Лучшим доказательством было бы, если бы вы могли запустить nmap из-за пределов вашей домашней сети в направлении вашего публичного IP-адреса.

Kr,
Cisco

0

(3) На моем маршрутизаторе Netgear C3700-100NAS я зарезервировал IP-адрес для своего компьютера с Ubuntu, чтобы он не изменился.

(4) Я настроил переадресацию портов с типом службы TCP/UDP, внешним и внутренним портами, установленным на 22, и он указывает на мой внутренний IP-адрес.

Из вашего описания похоже, что ваш роутер не слушает порт 22.

Я бы протестировал несколько вещей

  1. Можно ли пинговать ваш общедоступный IP-адрес? Если нет, можете ли вы активировать прослушивание ping/ICMP на маршрутизаторе?
  2. Проверьте, работает ли он, когда вы прослушиваете на своем маршрутизаторе порт 8022 и перенаправляете его на порт 22. В Linux непривилегированным пользователям не разрешается использовать порт с 1 по 1024, поэтому возможно что-то подобное.
  3. Я также проверил бы, будет ли он работать с портом 80 или 8080 и http. Возможно, маршрутизатор по какой-то причине не разрешает SSH.
0

Я бы предложил проверить таблицы NAT на вашем маршрутизаторе. Таблицы NAT должны позволить вашему маршрутизатору прослушивать любой запрос на этом порту и пересылать запрос на указанный порт на целевой машине (при желании они могут быть одним и тем же портом). Порты между 1024 и 49151 доступны для использования пользователем. Если вы используете нестандартный порт, используйте флаг -p в вашей команде ssh.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .