Как устранить ошибку "Connection Refused" на порту 22 в Linux

Как устранить ошибку "Connection Refused" на порту 22 в Linux

10.05.2024
Автор: HostZealot Team
2 мин.
280

Администрирование сервера в системе Linux не всегда является безупречным процессом, время от времени могут возникать некоторые проблемы и ошибки. Здесь мы поделимся нашим практическим опытом по поводу ошибки "connection refused". Когда возникает такая проблема, это означает, что подключение по протоколу SSH невозможно, и вам лучше следовать некоторым профессиональным рекомендациям, чтобы решить эту проблему с помощью методичного подхода.

Оценка подключения клиента

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

Тест доступности сервера с помощью Ping

Первое, что можно сделать для тестирования, - это использовать ping и IP или имя хоста, чтобы определить, можно ли связаться с сервером. Вот как это можно сделать:

$ ping 11.321.44.2

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

Проверка доступности порта с помощью Telnet

Еще один отличный вариант - проверить доступность порта с помощью команды telnet, которая использует текстовое соединение. Итак, давайте воспользуемся следующей командой для проверки порта SSH по умолчанию:

$ telnet 11.321.44.2 22

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

Проверка конфигурации SSH-сервера

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

$ grep Port /etc/ssh/sshd_config
Port 2222

Здесь мы не используем стандартный 22 порт. Тогда используйте следующую строку:

$ ssh -p 2222 user_name@ourserverip

Этот порт можно легко изменить на порт по умолчанию с помощью:

$ grep Port /etc/ssh/sshd_config
Port 22

После этого вам останется только выполнить перезагрузку с помощью systemctl. После этого подключение через порт по умолчанию может быть выполнено:

$ sudo systemctl restart sshd

Проверка статуса SSH

Следующим шагом в нашей процедуре будет проверка службы SSH и анализ состояния установки.

Проверка статуса службы SSH

Проверка статуса проста и должна включать следующую строку:

$ systemctl status ssh

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

$ sudo systemctl start sshd

В дополнение к этому может потребоваться включить службу SSH:

$ sudo systemctl enable sshd

В завершение следует выполнить перезагрузку, после чего можно попробовать проверить статус еще раз.

Конфигурация и исследование брандмауэра

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

Использование брандмауэра ufw

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

$ sudo ufw status

При просмотре результатов вы увидите, разрешен ли трафик и в каком направлении. Если вы не видите этой информации, попробуйте сначала открыть порт по умолчанию:

$ sudo ufw allow 22

Затем выполните перезагрузку и повторите попытку:

$ sudo ufw reload

Конфигурация брандмауэра iptables

Следующим шагом в этом процессе будет просмотр правил iptables:

$ sudo iptables -n -L | grep 22

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

$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Теперь давайте объясним вышеупомянутую строку, чтобы вы лучше понимали процесс:

  • 22 - эта часть определяет порт.
  • -p tcp - здесь мы указываем необходимый протокол, в данном случае это TCP.
  • -j ACCEPT означает, что трафик, соответствующий данному правилу, должен быть принят.

Следующим шагом будет установка iptables-persistent, это нужно сделать для того, чтобы они сохранялись после перезагрузки:

$ sudo apt-get install iptables-persistent

Во время процесса вам будет предложено сохранить текущие правила.

Конфигурация брандмауэра firewalld

Мы используем следующую команду, чтобы проверить, открыт ли порт SSH, это необходимо сделать в случае, если firewalld работает в Linux:

$ sudo firewall-cmd --list-ports

Может возникнуть ситуация, когда этого порта нет в списке, поэтому вы можете разрешить его с помощью следующей строки:

$ sudo firewall-cmd --permanent --add-port=22/tcp

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

$ sudo firewall-cmd --reload

Управление хостом SSH

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

$ cp ~/.ssh/known_hosts ~/.ssh/known_hosts.bak && echo > ~/.ssh/known_hosts

Проверка логов SSH

Еще один метод, который мы можем использовать для устранения ошибки, - проверить журналы SSH на наличие возможных проблем. Чтобы проверить последние логи, используйте tail и -f для просмотра новых записей:

$ tail -f /var/log/auth.log

Вы также можете попробовать /var/log/secure, если расположение в команде примера не помогло. Это два типичных варианта, но у вас есть и другой путь.

Анализ проблемы SSH

Если ни один из вышеупомянутых вариантов не сработал в вашем случае, то мы можем предложить еще один:

$ ssh -v asr@177.155.233.156.

Полученный результат поможет вам определить проблемы с SSH-соединением.

Заключение

Здесь мы поделились с вами некоторыми практическими рекомендациями по устранению ошибки SSH в системе Linux. Мы постарались включить все наиболее распространенные стратегии, касающиеся самых основных проблем с подключением. Начните с проверки конфигурации SSH, затем приступайте к тестированию настроек брандмауэра, и, конечно, вы также можете использовать анализ проблемы SSH. Просто следуя простейшей процедуре, вы получите безопасное SSH-соединение в вашей операционной системе (в нашем случае Linux). 

# Как сделать Поделиться:
Статьи по Теме