SSH — это сетевой протокол, который позволяет безопасно получать доступ к удаленной системе и управлять ею по сети. При подключении к удаленному компьютеру через SSH вы могли столкнуться с ошибкой «отказ в соединении». Эта проблема может вызвать разочарование, особенно если вы являетесь системным администратором и должны срочно выполнить некоторые задачи в удаленной системе.
Давайте рассмотрим некоторые из возможных причин отображения ошибки «отказ в соединении» через SSH и способы ее устранения. Проверять Полное руководство по настройке SSH в Linux и тестированию конфигурации.
1. Убедитесь, что сервер SSH установлен.
Одной из возможных причин ошибки «Отказано в подключении» является то, что на удаленном компьютере не запущен SSH-сервер. Без SSH-сервера устройство не будет принимать входящие SSH-соединения, и вы не сможете получить к нему удаленный доступ.
Таким образом, первым шагом в устранении неполадок является проверка того, установлен ли уже SSH-сервер на удаленной машине. Используйте следующую команду, чтобы убедиться, что сервер SSH установлен:
В дистрибутивах на основе Debian:
dpkg — list | grep ssh
В дистрибутивах на основе RHEL:
yum list installed | grep ssh
В openSUSE:
zypper search -i | grep ssh
В дистрибутивах на основе Arch:
pacman -Q | grep ssh
Если на удаленной машине установлен SSH-сервер, вы увидите его в списке выходных данных. В противном случае вы должны установить сервер OpenSSH на удаленной машине, к которой вы хотите получить доступ через SSH. OpenSSH — это версия инструментов SSH с открытым исходным кодом для удаленного доступа и управления системами.
Чтобы установить сервер OpenSSH, используйте следующие команды:
В дистрибутивах на основе Debian:
sudo apt install openssh-server
В дистрибутивах на основе RHEL:
sudo yum install openssh-server
В openSUSE:
sudo zypper install openssh
В дистрибутивах на основе Arch:
pacman -S openssh
Проверять Как удаленно управлять Linux из Windows.
2. Проверьте статус службы SSH.
Другой причиной ошибки «отказ в подключении» может быть то, что служба SSH не работает или не работает на удаленном компьютере. После того, как вы убедились, что SSH-сервер установлен, вам нужно проверить статус сервера.
sudo systemctl start sshd
Если служба запущена, в выводе будет указано, что она активна (работает). В противном случае вы увидите что-то вроде неактивного (мертвого).
Если ваш SSH-сервер не запущен, вы можете запустить его вручную с помощью следующей команды:
sudo systemctl enable sshd
Вы также можете включить автоматический запуск службы при загрузке с помощью:
sudo netstat -plntu | grep ssh
3. Проверьте SSH-порт
По умолчанию сервер SSH работает на порту 22. Однако порт по умолчанию можно изменить. Итак, если вы получаете сообщение об ошибке «отказ в соединении» в SSH, это может быть связано с тем, что вы пытаетесь подключиться к SSH-серверу через порт 22 по умолчанию, когда он работает на другом порту.
Вы можете использовать команду NetStat مع GREP Чтобы найти порт, который прослушивает ваш SSH-сервер:
sudo netstat -plntu | grep ssh
Вы также можете найти порт SSH в файле sshd_config с помощью следующей команды:
grep port /etc/ssh/sshd_config
После выбора правильного порта SSH попробуйте подключиться к удаленной системе, используя этот конкретный порт.
4. Проверьте системный брандмауэр
Большинство проблем с подключением вызвано тем, что брандмауэр вашего устройства блокирует некоторые порты или службы. Если на удаленной машине установлен и работает SSH-сервер, следующим шагом будет проверка настроек брандмауэра.
Чтобы узнать, блокирует ли брандмауэр соединение, временно отключите брандмауэр с помощью следующих команд:
В дистрибутивах Linux на базе Debian и Arch:
sudo ufw disable
В дистрибутивах на основе RHEL и openSUSE:
sudo systemctl disable firewalld
Если после отключения брандмауэра ошибка не появляется, значит, брандмауэр блокировал соединение. В этом случае повторно включите брандмауэр и добавьте правило разрешения SSH.
В дистрибутивах Debian и Linux на основе Arch используйте следующую команду, чтобы разрешить SSH доступ к брандмауэру UFW:
sudo ufw allow ssh
Кроме того, вы также можете разрешить SSH для номера порта в брандмауэре. Предположим, что ваш SSH-сервер использует порт 5555, тогда вы можете использовать следующую команду, чтобы разрешить его в брандмауэре:
sudo ufw allow 5555
Чтобы убедиться, что правило было успешно добавлено, проверьте статус UFW:
sudo ufw status
В дистрибутивах на основе RHEL и openSUSE используйте следующую команду, чтобы разрешить SSH доступ к брандмауэру:
sudo firewall-cmd — permanent — add-service=ssh
Чтобы разрешить SSH с номером порта, используйте следующую команду:
sudo firewall-cmd — permanent — add-port={port}/tcp
Для сервера SSH, работающего на порту 4444 , команда будет следующей:
sudo firewall-cmd — permanent — add-port=4444/tcp
Чтобы убедиться в успешном добавлении правила в брандмауэр, выполните следующую команду:
sudo firewall-cmd — list-all
5. Разрешите конфликты IP-адресов
Также существует вероятность того, что ошибка SSH «отказано в соединении» может возникнуть из-за конфликта IP-адреса SSH-сервера с IP-адресом другой системы в сети. Это происходит, когда две системы в сети утверждают, что имеют один и тот же IP-адрес, что приводит к конфликту IP-адресов.
Чтобы убедиться в наличии конфликта IP-адресов в вашей сети, используйте инструмент arp-сканирование Следующим образом:
arp-scan [network-id]
Если есть конфликт IP, вы увидите повторяющийся IP-адрес в выводе. На скриншоте ниже показан пример конфликта IP-адресов в сети:
Во избежание конфликтов IP-адресов убедитесь, что статические IP-адреса устройств не перекрываются с адресами пула DHCP. Проверять Что такое DHCP, что он означает и нужно ли его использовать?
Дополнительный совет: запустите SSH в подробном режиме.
Если вы столкнулись с ошибкой SSH, попробуйте запустить команду ssh в подробном режиме, чтобы отследить проблему. Чтобы запустить SSH в подробном режиме, используйте команду SSH с огурцом -ввв Следующим образом:
ssh -vvv [email protected]_address
В подробном режиме вы будете видеть отладочные сообщения на каждом этапе подключения, которые помогут вам понять, в чем проблема. Проверять Лучшие клиентские приложения SSH для iOS для удаленного управления серверами.
Устранение неполадок, связанных с отказом в подключении через SSH в Linux
Определив возможные причины ошибки подключения SSH и внедрив предложенные решения, вы сможете устранить неполадки и устранить ошибку SSH Connection Denied. В дополнение к этим шагам убедитесь, что вы подключены к правильному IP-адресу и используете правильные учетные данные для входа.
Чтобы сделать ваше удаленное соединение еще более безопасным, вы можете настроить двухфакторную аутентификацию для SSH в Linux. Вы можете просмотреть сейчас Как получить удаленный доступ к рабочему столу Ubuntu из Windows.