- Введение
- Клиент SSH не установлен
- Решение: Установите SSH-клиент
- Демон SSH не установлен на сервере
- Решение: Установите SSH на удаленном сервере
- Неверные учетные данные
- Служба SSH не работает
- Решение: Включите службу SSH
- Брандмауэр препятствует подключению SSH
- Решение: Разрешить SSH-соединения через брандмауэр
- Порт SSH закрыт
- Решение: Открыть порт SSH
- Отладка и логирование SSH
- Заключение
Введение
У вас возникли проблемы с доступом к удаленному серверу по SSH?
Если SSH отвечает сообщением “Connection refused“, вам может потребоваться изменить запрос или проверить настройку.
В этом руководстве вы найдете наиболее распространенные причины ошибки отказа в подключении SSH.
Почему происходит отказ в подключении при SSH?
Существует множество причин, по которым вы можете получить ошибку “Connection refused” при попытке подключиться по SSH к вашему серверу. Чтобы решить эту проблему, сначала нужно определить, почему система отказала вам в подключении по SSH.
Ниже приведены некоторые из наиболее распространенных причин, которые могут вызвать отказ в подключении по SSH.
Клиент SSH не установлен
Прежде чем приступать к устранению других проблем, необходимо проверить, установлен ли у вас SSH.
На машине, с которой вы получаете доступ к серверу, должен быть установлен клиент SSH.
Без правильной установки клиента вы не сможете удаленно подключиться к серверу.
Чтобы проверить, установлен ли в вашей системе клиент SSH, введите в окне терминала следующее:
ssh
Если терминал выдает список опций команды ssh, клиент SSH установлен в системе.
Однако если он отвечает “command not found“, необходимо установить клиент OpenSSH.
Решение: Установите SSH-клиент
Чтобы установить SSH-клиент на вашу машину, откройте терминал и выполните одну из перечисленных ниже команд.
Для систем Ubuntu/Debian:
sudo apt install openssh-client
Для систем CentOS/RHEL:
sudo yum install openssh-client
На выводе отображается номер порта, как показано на рисунке ниже.
Примечание: Вы можете подключиться к удаленной системе по SSH, используя аутентификацию с помощью пароля или открытого ключа (беспарольный вход по SSH). Если вы хотите настроить аутентификацию с открытым ключом, обратитесь к разделу 🔬 Как обменяться ключом SSH для аутентификации без пароля между серверами Linux
Служба SSH не работает
Служба SSH должна быть включена и работать в фоновом режиме.
Если служба не работает, демон SSH не сможет принимать соединения.
Чтобы проверить состояние службы, введите эту команду:
sudo service ssh status
Решение: Включите службу SSH
Если система показывает, что демон SSH не активен, вы можете запустить службу, выполнив следующие действия:
systemctl start sshd
Чтобы включить запуск службы при загрузке системы, выполните команду:
sudo systemctl enable sshd
Брандмауэр препятствует подключению SSH
SSH может отказывать в подключении из-за ограничений брандмауэра.
Брандмауэр защищает сервер от потенциально опасных соединений.
Однако если в системе настроен SSH, необходимо настроить брандмауэр так, чтобы он разрешал SSH-соединения.
Убедитесь, что брандмауэр не блокирует SSH-соединения, так как это может привести к ошибке “connection refused“.
Решение: Разрешить SSH-соединения через брандмауэр
Чтобы решить проблему, о которой мы говорили выше, вы можете использовать ufw (Uncomplicated Firewall), инструмент интерфейса командной строки для управления конфигурацией брандмауэра.
Введите следующую команду в окне терминала, чтобы разрешить SSH-соединения:
sudo ufw allow ssh
Порт SSH закрыт
Когда вы пытаетесь подключиться к удаленному серверу, SSH отправляет запрос на определенный порт.
Чтобы принять этот запрос, на сервере должен быть открыт порт SSH.
Если порт закрыт, сервер отказывает в подключении.
По умолчанию SSH использует порт 22.
Если вы не вносили никаких изменений в конфигурацию порта, вы можете проверить, прослушивает ли сервер входящие запросы.
Чтобы перечислить все прослушиваемые порты, выполните команду:
sudo lsof -i -n -P | grep LISTEN
Найдите порт 22 в выводе и проверьте, установлено ли значение STATE в LISTEN.
Также вы можете проверить, открыт ли определенный порт, в данном случае порт 22:
sudo lsof -i:22
Решение: Открыть порт SSH
Чтобы включить порт 22 для прослушивания запросов, используйте команду iptables:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Вы также можете открыть порты через графический интерфейс, изменив настройки брандмауэра.
Отладка и логирование SSH
Для анализа проблем с SSH в Linux можно включить режим verbose или режим отладки.
Когда вы включаете этот режим, SSH выводит отладочные сообщения, которые помогают устранить проблемы с подключением, конфигурацией и аутентификацией.
Существует три уровня :
- уровень 1 (-v)
- уровень 2 (-vv)
- уровень 3 (-vvv)
Поэтому вместо доступа к удаленному серверу с помощью синтаксиса ssh [server_ip] добавьте опцию -v и выполните команду:
ssh -v [server_ip]
В качестве альтернативы вы можете использовать:
ssh -vv [server_ip]
или
ssh -vvv [server_ip]
Заключение
В этой статье перечислены некоторые из наиболее распространенных причин ошибки SSH “Connection refused”.
Чтобы устранить проблему, просмотрите список и убедитесь, что все параметры настроены правильно.