Под управлением Ubuntu 12.04 я настроил сервер OpenSSH. Я могу подключиться изнутри локальной сети, но не снаружи. Я использую тот же файл sshd_config
, что и на других машинах с Ubuntu 12.04 (которые находятся в другой локальной сети).
$ ssh 192.168.0.2
работает нормально, но
$ ssh 65.76.97.222
(составлено IP-адрес) не работает. Ничего не произошло. Нет сообщения об ошибке или что-нибудь. Приглашение просто сидит там.
Благодаря комментариям ниже, мне удалось проверить через веб-сайты canyouseeme.org и ShieldsUP , что порт 22 действительно открыт.
Используя опцию -vvv
, я получаю следующее:
$ ssh -vvv 65.76.97.222
OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 65.76.97.222 [65.76.97.222] port 22.
debug1: Connection established.
debug1: identity file /home/myname/.ssh/id_rsa type -1
debug1: identity file /home/myname/.ssh/id_rsa-cert type -1
debug1: identity file /home/myname/.ssh/id_dsa type -1
debug1: identity file /home/myname/.ssh/id_dsa-cert type -1
debug1: identity file /home/myname/.ssh/id_ecdsa type -1
debug1: identity file /home/myname/.ssh/id_ecdsa-cert type -1
И тогда приглашение просто находится там.
Дополнительная отладочная информация из var/log/auth.log
:
$ grep sshd /var/log/auth.log
[cutting old lines...]
Jul 6 10:23:05 mymachine sshd[7871]: Did not receive identification string from 65.76.97.222
Я разрешаю любому пользователю подключаться, в частности, мое собственное имя пользователя. Что меня смущает, так это то, что у меня не было этой проблемы ни на одной другой машине, хотя они находятся на другой локальной сети. К этой локальной сети подключен только один компьютер. Любые идеи о том, как действовать дальше?
Несколько вещей для Вас для проверки.
Проверка /etc/ssh/sshd_config
и удостоверяется, что у Вас нет забавного AllowUsers
записи.
Определяют пользователя, которого Вы хотите соединить как:
ssh USER@SERVER
ssh SERVER -lUSER
Проверка Ваш брандмауэр (iptables
):
sudo iptables -L --line-numbers
sudo iptables -L -t nat --line-numbers
Проверьте, что Ваш шлюз на сервере SSH установлен на маршрутизатор, делающий перенаправление портов.
route -n
маршрут по умолчанию должен указать назад на тот маршрутизатор, иначе, Вы будете в состоянии инициировать соединения через него, но ACK не пойдет никуда!
Должен проверить, что перенаправление портов работает правильно, я обычно проверяю движение к https://, www.grc.com/shieldsup> Продолжается>, помещает Ваш номер порта в поле и нажимают определенный пользовательский датчик порта пользователя. Это должно сказать Вам, если тот порт TCP на самом деле открыт для общественности
Вы объявляете пользователя?
ssh Jimmy@65.76.97.222 -p51555
при предоставлении кода путем Вы используете его тогда, я полагаю, что он примет значение по умолчанию к текущему имени пользователя.
, Кроме того, у Вас должен быть пользователь в ЦЕЛЕВОЙ системе с разрешением. в вышеупомянутом примере "Jimmy"
Попробуйте войти с компьютера, который не подключен к сети. Я использовал приложение SSH на своем смартфоне. Сначала он не работал, но потом я выключил Wi-Fi, и он заработал как положено. У меня была такая же проблема с моим веб-сервером.
Проблема связана с петлей NAT.
Многие маршрутизаторы и некоторые инструменты безопасности предотвращают петлевые соединения в качестве функции безопасности. Это означает, что машина в вашей локальной сети не может подключиться к внешнему IP-адресу (например, 208.112.93.73) машины, которая также находится в вашей локальной сети. Подключение к локальному IP-адресу (например, 192.168.0.2) той же машины работает нормально.
Проверьте, есть ли на вашем маршрутизаторе функция «включить петлю NAT».