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

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

09:52, 10.05.2024

Содержание статьи
arrow

  • Оценка подключения клиента
  • Тест доступности сервера с помощью Ping
  • Проверка доступности порта с помощью Telnet
  • Проверка конфигурации SSH-сервера
  • Проверка статуса SSH
  • Проверка статуса службы SSH
  • Конфигурация и исследование брандмауэра
  • Использование брандмауэра ufw
  • Конфигурация брандмауэра iptables
  • Конфигурация брандмауэра firewalld
  • Управление хостом SSH
  • Проверка логов SSH
  • Анализ проблемы SSH
  • Заключение

Администрирование сервера в системе 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). 

views 46s
views 2
Поделиться

Была ли эта статья полезной для вас?

1 пользователи считают эту статью полезной

Популярные предложения VPS

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.