Не удается подключиться по SSH, но можно пинговать.

Вопрос или проблема

Я использую Ubuntu 16.04. Проблема в том, что я могу использовать SSH для подключения к другим машинам из своей системы, но не могу подключиться к своей системе с другой машины. Однако я могу пинговать свою систему с других машин.

Например, IP-адрес моей системы 192.168.103.32, а другой компьютер, на котором установлена CentOS, имеет IP-адрес 192.168.170.52. Я могу подключиться по SSH к 192.168.170.52 с 192.168.103.32, но наоборот соединение не устанавливается. Также я могу пинговать 192.168.103.32 с 192.168.170.52.

Вывод команды ssh с 192.168.170.52:

ssh -v [email protected]
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 фев 2013
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: Применение параметров для *
debug1: Подключение к 192.168.103.32 [192.168.103.32] порт 22.

Вывод для:

sudo service ssh status

таков:

ssh.service - OpenBSD Secure Shell сервер
   Загружено: загружено (/lib/systemd/system/ssh.service; включено; предустановка: включена)
   Активно: активно (работает) с Чт 2017-06-29 11:39:00 IST; 39 мин назад
  Процесс: 3064 ExecReload=/bin/kill -HUP $MAINPID (код=выход, статус=0/УСПЕШНО)
 Главный PID: 1142 (sshd)
   CGroup: /system.slice/ssh.service
           └─1142 /usr/sbin/sshd -D

29 июн 11:39:37 bhavya systemd[1]: Перезагрузка сервера OpenBSD Secure Shell.
29 июн 11:39:37 bhavya sshd[1142]: Получен SIGHUP; перезапуск.
29 июн 11:39:37 bhavya systemd[1]: Сервер OpenBSD Secure Shell перезагружен.
29 июн 11:39:37 bhavya sshd[1142]: Сервер слушает на 0.0.0.0 порт 22.
29 июн 11:39:37 bhavya sshd[1142]: Сервер слушает на :: порт 22.
29 июн 11:39:37 bhavya systemd[1]: Перезагрузка сервера OpenBSD Secure Shell.
29 июн 11:39:37 bhavya sshd[1142]: Получен SIGHUP; перезапуск.
29 июн 11:39:37 bhavya sshd[1142]: Сервер слушает на 0.0.0.0 порт 22.
29 июн 11:39:37 bhavya sshd[1142]: Сервер слушает на :: порт 22.
29 июн 11:39:37 bhavya systemd[1]: Сервер OpenBSD Secure Shell перезагружен.

Я бы проверил стандартное сетевое подключение.

Если SSH-сервер должен находиться в той же сети, что и вы, попробуйте выполнить ping.
Если ping был успешным, это не обязательно означает, что у вас полная IP-связь. Проверьте, особенно если сервер является виртуальной машиной, чтобы MAC-адрес сетевого интерфейса (виртуального или реального) находился в той же VLAN, что и клиент. Если вы используете какую-либо форму маркировки пакетов, а не маркировки портов коммутатора, тогда есть случаи, когда коммутатор правильно пропускает ICMP пакеты, но не TCP/UDP. Это сводит меня с ума весь день.

Выполнение

sudo ufw allow 22

сработало для меня.

Объяснение:–

UFW, или Uncomplicated Firewall, является интерфейсом для iptables. Его основная цель – сделать управление вашим файрволом предельно простым и предоставить простой в использовании интерфейс. Он хорошо поддерживается и популярен в сообществе Linux — даже установлен по умолчанию во многих дистрибутивах.

Одной из вещей, которые упростят настройку любого файрвола, является определение некоторых стандартных правил для разрешения и запрета соединений. По умолчанию UFW запрещает все входящие соединения и разрешает все исходящие. Это означает, что любой, кто пытается подключиться к вашему облачному серверу, не сможет установить соединение, в то время как любое приложение внутри сервера сможет выйти в внешний мир.

На самом деле, вчера я испытывал трудности с настройкой NFS, поэтому пытался настроить свой файрвол. И сегодня, когда я загрузил свой компьютер, настройки файрвола могли быть сброшены на стандартные. Поэтому это могло быть проблемой.

Ответ или решение

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

1. Проверка статуса SSH-сервера

На вашем компьютере Ubuntu 16.04, где работает SSH-сервер, было успешно выполнено команду sudo service ssh status. Вывод показывает, что SSH-сервер активен и слушает на порту 22, что является хорошим показателем. Однако, нужно удостовериться, что он правильно настроен для обработки входящих соединений.

2. Настройки файрвола

Ваша проблема может быть связана с настройками файрвола, установленного на вашей системе. По умолчанию, Ubuntu использует UFW (Uncomplicated Firewall), который может блокировать входящие соединения. Если параметры настроек в UFW были изменены, возможно, ваш SSH-порт (22) был заблокирован.

Решение:

Чтобы разрешить входящие SSH-соединения, выполните следующую команду:

sudo ufw allow 22

После этого проверьте статус UFW:

sudo ufw status

Убедитесь, что правило для порта 22 присутствует в списке разрешенных.

3. Проверка конфигурации SSH

Убедитесь, что в конфигурационном файле SSH-сервера (/etc/ssh/sshd_config) не установлены ограничения, которые могут блокировать соединения. Проверьте следующие параметры:

  • PermitRootLogin — убедитесь, что доступ не запрещен (если требуется).
  • AllowUsers — если этот параметр задан, убедитесь, что ваш пользователь указан в этом списке или уберите его, чтобы разрешить доступ всем пользователям.

После внесения изменений в файл конфигурации перезапустите SSH-сервер:

sudo service ssh restart

4. Проверка сетевых настроек

Если ваш сервер является виртуальной машиной (VM), важно убедиться, что его сетевой интерфейс правильно настроен. Убедитесь, что:

  • MAC-адрес сетевого интерфейса находится в одной VLAN с клиентом.
  • У вас корректная настройка NAT или мостовых соединений.

Проблемы могут возникнуть, если используется тегирование пакетов, которое может проходить ICMP (пинг), но блокировать TCP или UDP-пакеты.

5. Тестирование соединения

Используйте утилиты для мониторинга сетевого трафика, такие как tcpdump, для проверки, приходит ли трафик SSH на ваш компьютер. Выполните следующую команду:

sudo tcpdump -i any port 22

Это позволит вам увидеть, есть ли попытки соединения на порт 22.

6. Заключение

Если настройки файрвола и SSH сервера не помогают, попробуйте временно отключить UFW и другие файрволы, чтобы подтвердить, что они вызывают проблему:

sudo ufw disable

Если после отключения файрвола SSH-соединение удается установить, значит, проблема в конфигурации файрвола. Обязательно включите его обратно и настройте правильно.

Если ни одно из предложенных решений не помогло, рекомендуется просмотреть системные журналы на предмет ошибок. Для этого можете использовать команду:

journalctl -xe

Это сообщение обеспечит более детальную информацию о происходящем на сервере и поможет выяснить, в чем заключается проблема.

Оцените материал
Добавить комментарий

Капча загружается...