Я пытаюсь настроить openssh-сервер, но у меня возникают некоторые проблемы с подключением. Я изменил порт на нестандартный (57757), а затем настроил мой маршрутизатор для переадресации на этот порт. В моей локальной сети я могу нормально подключиться к моей машине через порт 57757, но не могу сделать это в глобальной сети.
Если я нахожусь за пределами локальной сети и пытаюсь получить доступ к своей машине по неверному порту, я сразу получаю сообщение «Отказано в соединении». Однако с правильным портом он просто зависает и затем таймауты.
Что я могу попробовать отладить проблему? Я попробовал traceroute, но он не сказал мне ничего полезного.
РЕДАКТИРОВАТЬ: я понял, что моя проблема была в том, что мой маршрутизатор не поддерживает доступ к нему через WAN IP внутри. Я ssh'd на другой сервер и обратно, и он работал нормально.
sudo apt-get purge openssh-server
затем переустановить ее (чтобы мы избавились от всего, что могло случиться с конфигом) и перенастроить ваш маршрутизатор для пересылки 22-> 22.Ответы:
Обычно это означает, что вы перенаправили порт на неправильный IP-адрес в локальной сети.
Ваш маршрутизатор NAT получает входящий трафик через порт 57757 и отправляет его на определенный IP-адрес и порт в локальной сети.
По умолчанию Ubuntu не фильтрует входящие попытки соединения с брандмауэром. Поэтому, если вы не изменили настройки брандмауэра в Ubuntu, попытка открыть соединение с любым портом TCP, от 1 до 65535, будет либо:
Если порты были отфильтрованы брандмауэром, то вы получите то, что видите, - нет ответа на попытку подключения. Но:
ufw
,iptables
), никакие порты не фильтруются, иКогда вы перенаправляете порт на несуществующую машину с маршрутизатором NAT, он отправляет входящий трафик с этого порта на несуществующую машину, то есть отправляет его в черную дыру ; это эффективно отброшено.
Это вызывает именно ту ситуацию, которую вы описали. Таким образом, вы, скорее всего, можете это исправить, убедившись, что порт перенаправляется на правильный IP-адрес в локальной сети.
Если это оказывается не было проблемой ...
... тогда вам придется устранить неполадки.
Правильно ли указан порт для локальной сети? То есть, если вы не изменили конфигурацию сервера SSH, установлен ли порт 57757 на стороне WAN для перенаправления на порт 22 на сервере OpenSSH? (Вы можете перепроверить это.)
Возможно, есть проблема с выбранным вами портом (57757). Попробуйте другой и посмотрите, работает ли это лучше.
(Если этого не произойдет, и вы продолжите выполнять эти инструкции, либо измените его обратно или замените «57757» ниже на новый номер.)
Попробуйте перезапустить сервер OpenSSH. Это может помочь, если есть проблемы с сетью. Если это не помогает, попробуйте перезагрузить маршрутизатор и кабельный / DSL / ISDN модем.
Если по какой-либо причине вы не можете перезапустить все три устройства, я рекомендую перезапустить все, что сможете. Если вы не можете перезапустить службу OpenSSH, по крайней мере, вы можете перезапустить службу и (более вероятно, исправить это) отключить интерфейс и снова запустить его.
Чтобы перезапустить сервер OpenSSH:
Чтобы отключить сетевой интерфейс, сначала выясните, на каком интерфейсе он находится:
Как правило, для машины с одной картой Ethernet и / или одной беспроводной картой Ethernet есть,
eth0
а беспроводная естьwlan0
.Если вы хотите отключить и перезапустить проводное Ethernet-соединение, запустите:
Затем запустите:
Кроме того, вы можете запустить:
С последующим:
Если машина использует NetworkManager для управления интерфейсом, на котором работает сервер OpenSSH, я все же рекомендую попробовать описанные выше способы, но вы также можете попробовать отключить и повторно подключиться в NetworkManager.
Для соединения Ethernet также попробуйте отсоединить кабель и снова подключить его. Для беспроводного соединения попробуйте выключить его с помощью аппаратного переключателя (если он есть) и снова включить.
Здесь происходит что-то странное, и ни одно из этого не занимает много времени - стоит быть внимательным, прежде чем предпринимать более кропотливые шаги по устранению неполадок.
Как вы пытаетесь получить к нему доступ со стороны глобальной сети? Если вы используете для этого машину в локальной сети (просто подключаясь из локальной сети к IP-адресу WAN вашего маршрутизатора), это поддерживается только для некоторых маршрутизаторов. В конце концов, задача маршрутизатора - маршрутизировать трафик между сторонами WAN и LAN, а не маршрутизировать трафик от одной стороны к себе. Поддержка подключения к перенаправленным портам на IP-адресе WAN из локальной сети - скорее исключение, чем правило, хотя многие домашние / офисные маршрутизаторы имеют эту функцию.
Поэтому, если вы не тестируете переадресацию порта с хоста на стороне WAN, вам следует это сделать. Ваши варианты для этого:
Подключите себя со стороны WAN. Это работает, если у вас есть доступ к машине, например, SSH-доступ к удаленной машине в школе, на работе, в доме друга или тому подобное.
Подключите тестовый компьютер между маршрутизатором и всем, что обеспечивает его подключение к Интернету. Если у вас есть кабельный / DSL / ISDN модем с портом Ethernet, и к нему подключен маршрутизатор, вы можете подключить коммутатор к модему и подключить маршрутизатор к коммутатору. Подключите компьютер к коммутатору. Сначала посмотрите, получает ли эта машина доступ в Интернет - в наши дни многие провайдеры предоставляют два или более отдельных IP-адреса. Если этого не произойдет , перейдите на страницу настройки вашего маршрутизатора и проверьте его маску подсети WAN IP и WAN , затем статически назначьте IP-адрес подключенному коммутатору компьютеру, который находится в той же подсети.
Этот метод имеет некоторые недостатки. Это боль! Кроме того, теоретически интернет-провайдер может неправильно настроить свою сеть, чтобы тестовая машина, подключенная к коммутатору, могла выходить в Интернет. (Если только ваш провайдер не намерен разрешить вам подключаться к нескольким WAN IP ивы выбрали WAN IP для тестовой машины, которую назначил вам ваш провайдер, и трафик между ним и истинным хостом WAN должен быть заблокирован / сброшен провайдером. Но у некоторых интернет-провайдеров есть странные практики, так что, кто знает?) Если это произойдет, это вряд ли вызовет серьезные проблемы (и даже если это произойдет, у вас есть подключение только на несколько минут). Тем не менее, это может рассматриваться как попытка получить дополнительный доступ за пределами вашей подписки, и, что более важно, если другой пользователь имеет такой же IP-адрес, это может помешать его соединению. Поэтому, если вы хотите попробовать этот методНе пытайтесь подключиться к Интернету с тестовой машины, немедленно остановитесь, если вы обнаружите, что тестовая машина может подключиться к Интернету, и не пытайтесь сделать это вообще, если это запрещено или не рекомендовано вашим провайдером. (И не используйте это, если сторона WAN вашего маршрутизатора является офисной локальной сетью, без предварительной консультации с сетевым администратором. Это не поставщик услуг Интернета, и не предполагается, что ресурсы предоставляются для предотвращения нежелательного доступа.)
Существует вариант этой техники, который иногда более уместен. Ваш маршрутизатор, вероятно, получает информацию о своем подключении - IP-адрес, маску подсети, IP-адрес шлюза (маршрутизатора) в глобальной сети, который он использует, когда он не знает, куда отправить что-либо, и информацию о DNS-серверах - от вашего Интернет-провайдер, через DHCP, через кабельный / DSL / ISDN модем. Вот почему вам необходимо подключить маршрутизатор к модему, чтобы придать ему необходимую конфигурацию, чтобы сделать результаты тестирования на стороне WAN значимыми. Но маршрутизатор обычно запоминает эту информацию, если он действительно подключен к сети на стороне глобальной сети. Таким образом, вы можете подключить маршрутизатор, модем и тестовый компьютер, но затем быстро ипрежде чем что-либо делать с тестовой машиной, кроме того, чтобы убедиться, что коммутатор видит его как подключенный , отключите модем.
Используйте бесплатный сервис в Интернете для проверки ваших портов. Поскольку вставка тестового компьютера между интерфейсом WAN вашего маршрутизатора и Интернетом (см. Выше) весьма сложна - и поскольку он покажет порт как доступный, даже если он недоступен из-за блокировки вашим провайдером (что также верно для подключения к WAN IP маршрутизатора со стороны локальной сети) - обычно лучше использовать веб-сервис сканирования портов.
Существует много служб сканирования портов. (Некоторые используют фразу «проверь свой брандмауэр», полагая, что большинство людей пытаются заблокировать, а не облегчить доступ.) Это одно из них. Если вы решите использовать его, нажмите « Продолжить» , введите 57757 в текстовое поле и нажмите « Использовать указанный настраиваемый зонд порта» . Для того, чтобы заставить сервер работать, вы хотите , чтобы он был «открытым». «Закрыт» означает, что порт доступен, но сервер не запущен (и поэтому попытка подключения была отклонена). «Скрытность» означает, что порт был недоступен - как если бы там не было никакой машины (или как если бы порт был переадресован там, где нет машины).
Итак, вы определили, что он действительно недоступен из Интернета. Потенциально вы можете отсканировать его (в идеале со стороны глобальной сети), чтобы получить подробную информацию, хотя часто это не дает полезной информации.
Если вы хотите сделать это, то на стороне WAN вы можете запустить:
Если порт отображается как отфильтрованный, это подтверждает, что отправленные туда пакеты, вероятно, никуда не движутся (или блокируются / отбрасываются по пути).
Стоит проверить, не возникает ли проблема, связанная с тем, что порт, подключенный к глобальной сети, отличается от порта, который фактически прослушивает сервер. Переадресация порта 55757 в WAN на порт 22 на машине LAN должна заставить все работать нормально, но, возможно, где-то (сервер, клиент) что-то предполагает, что номер порта одинаков с точки зрения сервера и клиента.
Предположительно, вы не можете перенаправить порт 22 через маршрутизатор. Возможно, ваш интернет-провайдер блокирует этот порт. Но если вы можете сделать это, сделайте это!
В противном случае, вы можете сделать сервер OpenSSH действительно прослушивает порт 57757.
Для этого создайте резервную копию файла конфигурации сервера:
Затем отредактируйте его:
Или используйте консольный текстовый редактор, если на машине нет графического интерфейса:
В верхней части файла появляется этот блок текста:
Просто измените
Port 22
строку вверху, чтобы сказатьPort 57757
вместо этого.Вы можете добавить порт, а не менять его. Тем не менее, я рекомендую тестировать с самой простой эффективной конфигурацией.
Смотрите
man sshd_config
подробности о настройке сервера OpenSSH.Сохраните файл, выйдите из текстового редактора и перезапустите сервер SSH:
Теперь измените порт перенаправления на маршрутизаторе, чтобы порт 57757 переадресовывал на порт 57757 (не 22) на сервере OpenSSH, и посмотрите, доступен ли он из Интернета.
Если он все еще не работает, посмотрите, не блокирует ли брандмауэр Ubuntu трафик, исходящий из-за пределов локальной сети.
(Это маловероятно, если вы сами не настроили его таким образом, но если все ваши настройки верны и ни один из вышеперечисленных шагов не выявил ничего о проблеме, стоит проверить.)
Бегать:
По умолчанию в Ubuntu вывод выглядит так:
Это простая разрешающая политика, по сути, эквивалентная отсутствию брандмауэра. (Действительно, если модуль брандмауэра netfilter не был скомпилирован в ваше ядро, ваша система будет работать так же, как и с указанными выше настройками, хотя
iptables
команда, которая запрашиваетnetfilter
настройки, конечно же, не будет работать.)Если ваша конфигурация не выглядит так, прочитайте,
man iptables
чтобы выяснить, что они делают, и / или отредактируйте свой вопрос (или, если вы читаете эту статью с другим человеком с похожей проблемой, опубликуйте новый вопрос), чтобы включить их. Обратите внимание, что вашиiptables
правила могут раскрыть конфиденциальную информацию о вашей конфигурации. С практической точки зрения это обычно не так - с возможным исключением правил о конкретных хостах, которые заблокированы, или если ваша конфигурация очень плохая / ненадежная - обычно полезность этой информации для злоумышленника, особенно для машины на домашняя / офисная локальная сеть за NAT-маршрутизатором минимальна.источник
Поскольку он работает изнутри вашей локальной сети, ваша настройка сервера кажется правильной. Вы должны сказать маршрутизатор для пересылки из порта вы хотите использовать на внешней стороне к порту 57757 на вашей машине .
А
traceroute
будет бесполезен в этом случае.источник