Вопрос или проблема
Я использую 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
Это сообщение обеспечит более детальную информацию о происходящем на сервере и поможет выяснить, в чем заключается проблема.