Не удается подключиться через ssh centos

Обновлено: 21.11.2024

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

Прежде чем устранять проблемы с SSH, определите, что больше подходит для вашей ситуации: миграция или повторное развертывание, убедитесь, что проблема действительно связана с SSH, и ознакомьтесь с информацией и навыками, необходимыми для успешного устранения неполадок.

Ошибки

Разрешение имени хоста

Большинство ошибок разрешения возникает, когда ссылка на хост SSH не может быть сопоставлена ​​с сетевым адресом. Хотя это почти исключительно связано с DNS, основной причиной не всегда является проблема с DNS.

В клиенте OpenSSH такая команда, как ssh [email protected], может возвращать следующую ошибку:

В PuTTY вы можете увидеть окно ошибки с таким текстом:

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

Если у вас возникли проблемы с разрешением DNS на любом уровне, вы также можете использовать IP-адрес дроплета в качестве временного решения, например, ssh [защищенная электронная почта] вместо ssh [защищенная электронная почта] .

Следующие руководства являются хорошим ресурсом для начала работы с ошибками конфигурации DNS:

Время ожидания соединения

Тайм-аут подключения означает, что клиент попытался установить сетевой сокет к серверу SSH, но сервер не ответил в течение периода ожидания.

В клиенте OpenSSH такая команда, как ssh [email protected], может привести к следующей ошибке:

В PuTTY вы можете увидеть окно ошибки с таким текстом:

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

  • Убедитесь, что IP-адрес узла правильный для дроплета.
  • Убедитесь, что ваша сеть поддерживает подключение через используемый порт SSH. Некоторые общедоступные сети могут блокировать порт 22 или пользовательские порты SSH. Вы можете сделать это, например, протестировав другие хосты, использующие тот же порт, с известным рабочим SSH-сервером. Это может помочь вам определить, не связана ли проблема с вашей каплей. . Убедитесь, что для них не задана политика DROP по умолчанию, а порт не добавлен для разрешения подключений.

Отказ в соединении

Отказ в подключении имеет некоторые тонкие отличия от тайм-аута. Это означает, что запрос направляется на хост SSH, но хост не может успешно принять запрос.

В клиенте OpenSSH такая команда, как ssh [email protected], может возвращать следующую ошибку:

В PuTTY вы можете увидеть окно ошибки с таким текстом:

В этой ситуации у вас может быть та же основная проблема, что и с ошибками тайм-аута соединения, но есть некоторые дополнительные вещи, которые вы можете проверить:

  • Убедитесь, что IP-адрес узла правильный для дроплета.
  • Убедитесь, что ваша сеть поддерживает подключение через используемый порт SSH. Некоторые общедоступные сети могут блокировать порт 22 или пользовательские порты SSH. Вы можете сделать это, например, протестировав другие хосты, использующие тот же порт, с известным рабочим SSH-сервером. Это может помочь вам определить, не связана ли проблема с вашей каплей. . Убедитесь, что для них не задана политика DROP по умолчанию, а порт не добавлен для разрешения подключений.
  • Убедитесь, что служба запущена и привязана к ожидаемому порту.

Решения

Проверка брандмауэра

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

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

То, как вы проверяете правила брандмауэра, зависит от того, какой брандмауэр использует ваша капля. Серверы Ubuntu обычно работают под управлением UFW; Серверы CentOS часто используют FirewallD. Если вы их не используете, скорее всего, вы используете iptables.

Какой бы брандмауэр ни был в вашей системе, обязательно ознакомьтесь с тем, как изменить его правила. Вам также необходимо знать, какой порт использует ваша служба SSH. По умолчанию это 22 , но для подтверждения вы можете следовать разделу «Проверка порта службы SSH» ниже.

Для систем Linux, не использующих UFW или FirewallD, перечислите правила брандмауэра с помощью команды iptables с sudo или от имени пользователя root.

Следующий вывод указывает на отсутствие правил, блокирующих трафик SSH:

Если вы видите правила или политику по умолчанию REJECT или DROP , вы должны убедиться, что цепочка INPUT разрешает порт, на котором работает ваша служба SSH (по умолчанию это 22).

Для пользователей FirewallD используйте команду firewall-cmd, чтобы вывести список служб:

В выходных данных должен быть показан список служб, включая SSH (порт 22 по умолчанию), чтобы указать, что брандмауэр поддерживает трафик SSH:

Если вы используете собственный порт для SSH, вы можете проверить это с помощью параметра --list-ports. Если вы создали собственное определение службы, вы все равно должны нормально видеть SSH с параметром --list-services .

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

Выходные данные также показывают доступные порты:

Убедитесь, что ваш порт SSH есть в списке.

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

Если вы не можете подключиться к дроплету по SSH, убедитесь, что служба SSH запущена. То, как работает служба, зависит от системы.

В более старых версиях ОС (Ubuntu 14 и ниже, CentOS 6, Debian 6) может использоваться служебная команда, поддерживаемая Upstart. Более современные дистрибутивы с systemd используют команду systemctl. Дистрибутивы на основе Red Hat (например, CentOS и Fedora) называют службу sshd, а Debian и Ubuntu называют ее ssh .

Аналогично, на сервере, использующем systemd (например, CentOS 7), используйте команду systemctl для проверки статуса:

Работающая служба показывает вывод, подобный этому, с активным (работает) в строке Active:.

Если служба не запущена, в строке «Активность» отображается неактивность, за которой следуют последние записи журнала для службы:

В этом случае перезапустите его с помощью systemctl start sshd .

Для систем, использующих сервисную команду, проверьте состояние процесса SSH с помощью следующей команды (запускаемой от имени пользователя root или с помощью sudo ):

Подобный вывод, включающий PID (идентификатор процесса), указывает на то, что процесс работает должным образом:

Если он не запущен, вы увидите вывод, указывающий, что процесс остановлен:

В этом случае перезапустите его с помощью службы ssh start .

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

Существует два основных способа проверить, на каком порту работает служба SSH. Один проверяет файл конфигурации SSH, а другой проверяет запущенный процесс.

В большинстве систем файл конфигурации SSH называется /etc/ssh/sshd_config . Порт по умолчанию — 22 , но его можно переопределить любой строкой конфигурации в этом файле, указав директиву порта с номером.

Вы можете искать такие строки, используя grep:

Вы увидите такой вывод с номером порта:

Если вы знаете, что служба работает, вы можете подтвердить, что служба работает на ожидаемом порту, используя ss (запускать с помощью sudo или от имени пользователя root). Подобные выходные данные предоставляются и для команды netstat -plnt, но ss является предпочтительной командой для запроса информации о сокете из ядра.

Вывод, который вы ищете, должен ссылаться на имя программы, прослушивающей настроенный порт. Например, эти выходные данные показывают, что служба SSH прослушивает все интерфейсы * на порту 22 .

Ссылки на интерфейсы * и 0.0.0.0 указывают на все интерфейсы в дроплете. 127.0.0.1 указывает, что служба не является общедоступной. Соответствующей директивой sshd_config является ListenAddress, и ее следует закомментировать по умолчанию для всех интерфейсов или указать общедоступный IP-адрес дроплета.

Заключение

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

  • Имя пользователя, хост и порт, которые вы используете для подключения.
  • Механизм аутентификации, который вы планируете использовать.
  • Полный вывод ошибок, связанных с этапом ошибки, включая подробный вывод клиента SSH
  • Вся информация, которую вы уже собрали в процессе устранения неполадок.
  • Все, что вам неясно при ссылке на эту статью.

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

Не удается подключиться к удаленному компьютеру Cent OS 7 через SSH

Не удается подключиться к удаленному компьютеру Cent OS 7 через SSH

Здравствуйте, я только что установил Cent OS 7 на компьютер и не могу подключиться к нему удаленно. Интернет включен, и у меня есть IP-адрес с помощью команды ifconfig. Когда я делаю ssh "@", он говорит "Соединение сброшено". Я даже не могу войти в систему как пользователь root.

Но я по-прежнему не могу получить доступ к машине. Я новичок в линуксе. Что мне делать?

Вывод для ssh -v me@server:

OpenSSH_7.1p2, OpenSSL 1.0.1g 7 апреля 2014 г.
debug1: чтение данных конфигурации /etc/ssh_config
debug1: подключение к порту 22 centos7 [ ]
debug1: подключение установлено.
debug1: key_load_public: нет такого файла или каталога
debug1: файл идентификации /home/mobaxterm/.ssh/id_rsa type -1
debug1: key_load_public: нет такого файла или каталога
debug1: идентификационный файл /home/mobaxterm/.ssh/id_rsa-cert type -1
debug1: key_load_public: нет такого файла или каталога
debug1: файл идентификации /home/mobaxterm/.ssh/id_dsa type -1
debug1: key_load_public: нет такой файл или каталог
debug1: файл идентификации /home/mobaxterm/.ssh/id_dsa-cert type -1
debug1: key_load_public: нет такого файла или каталога
debug1: файл идентификации /home/ mobaxterm/.ssh/id_ecdsa тип -1
debug1: key_load_public: нет такого файла или каталога
debug1: файл идентификации /home/mobaxterm/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: нет такого файла или каталога
debug1: файл идентификации /home/mobaxterm/.ssh/id_ed25519 type -1
debug1: key_load_public: нет такого файла или каталога
debug1: файл идентификации /home /mobaxterm/.ssh/id_ed25519-cert type -1
debug1: Включение режима совместимости для протокола 2.0
debug1: Строка локальной версии SSH-2.0-OpenSSH_7.1
debug1: Версия удаленного протокола 2.0 , удаленная версия ПО OpenSSH_6.6.1
debug1: соответствует: OpenSSH _6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug1: Аутентификация в centos7:22 как 'sree'
debug1: SSH2_MSG_KEXINIT отправлено
Соединение сброшено
.

Вы не предоставили полезную информацию.
Где находится машина, к которой вы пытаетесь подключиться?
Это общедоступный или частный IP-адрес?
Если частный, правильно ли настроена переадресация портов на маршрутизаторе?

Привет, Джеральд, спасибо за ответ. Я не совсем понял, когда вы спросили, где машина. Он находится на моем рабочем месте, примерно в 15 футах от меня. Я могу в значительной степени подойти к этому компьютеру и войти в систему, используя свой идентификатор пользователя и пароль. Я только не могу подключиться к нему удаленно.

Используемый мной IP-адрес — это частный IP-адрес. Я уверен, что перенаправление портов настроено правильно на маршрутизаторе. У нас есть другие машины, к которым мы обращаемся через тот же порт 22.

Корневой доступ — это зло: не используйте root (sudo) для запуска каких-либо команд, указанных в моих сообщениях, если это не указано явно. Пожалуйста, предоставьте необходимый объем контекста, чтобы понять вашу проблему/вопрос.

Я только что удалил и установил ssh-сервер на машине с Linux. Я все еще не могу подключиться. Я попытался сгенерировать ключ на своем клиентском компьютере (который является ноутбуком с Windows) с помощью команд:

<р>1. ssh-keygen -t rsa
2. ssh-copy-id user@remotehost
(ИЛИ) cat ~/.ssh/id_rsa.pub | ssh user@remotehost "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Но я снова получаю:

/bin/ssh-copy-id: ИНФОРМАЦИЯ: попытка входа с новым ключом (ключами), чтобы отфильтровать уже установленные

/bin/ssh-copy-id: ОШИБКА: сброс соединения

/var/log/secure говорит:
sshd[14322]: фатально: нет поддерживаемых алгоритмов обмена ключами [preauth]

У вас проблемы с доступом к удаленному серверу через SSH? Если SSH отвечает сообщением «Отказано в подключении», вам может потребоваться изменить запрос или проверить настройки.

В этом руководстве вы найдете наиболее распространенные причины ошибки отказа в соединении SSH.

Почему при подключении по SSH отказывается подключаться?

Существует множество причин, по которым вы можете получить сообщение об ошибке "Отказано в соединении" при попытке подключиться к серверу по протоколу SSH. Чтобы решить эту проблему, вам сначала нужно определить, почему система отказала вам в подключении через SSH.

Ниже вы найдете некоторые из наиболее распространенных причин, которые могут привести к отказу в подключении по SSH.

Клиент SSH не установлен

Прежде чем устранять другие неполадки, в первую очередь проверьте, правильно ли установлен SSH. На машине, с которой вы получаете доступ к серверу, должен быть настроен клиент SSH. Без правильной настройки клиента вы не сможете удаленно подключиться к серверу.

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

Если терминал предоставляет список параметров команды ssh, клиент SSH установлен в системе. Однако, если он отвечает, что команда не найдена, вам необходимо установить клиент OpenSSH.

Решение: установите SSH-клиент

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

Для систем Ubuntu/Debian:

Для систем CentOS/RHEL:

Примечание. Пошаговое руководство по установке см. в разделе Как установить OpenSSH в CentOS или Как включить SSH в Ubuntu.

Демон SSH не установлен на сервере

Точно так же, как вам нужна клиентская версия SSH для доступа к удаленному серверу, вам нужна версия сервера для прослушивания и приема подключений.Поэтому сервер может отказать во входящем соединении, если сервер SSH отсутствует или настройка недействительна.

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

Если на выходе появляется сообщение "Отказано в подключении", перейдите к установке SSH на сервере.

Решение. Установите SSH на удаленном сервере

Чтобы решить проблему с отсутствующим сервером SSH, обратитесь к инструкции по установке сервера OpenSSH.

Учетные данные неверны

Опечатки или неправильные учетные данные – распространенные причины отказа в подключении по SSH. Убедитесь, что вы не ошиблись при вводе имени пользователя или пароля.

Затем проверьте, используете ли вы правильный IP-адрес сервера.

Наконец, убедитесь, что у вас открыт правильный порт SSH. Вы можете проверить, запустив:

В выходных данных отображается номер порта, как показано на изображении ниже.

Примечание. Вы можете подключиться к удаленной системе по SSH, используя аутентификацию по паролю или аутентификацию с открытым ключом (вход по SSH без пароля). Если вы хотите настроить аутентификацию с открытым ключом, см. раздел Как настроить вход SSH без пароля.

Служба SSH не работает

Служба SSH должна быть включена и работать в фоновом режиме. Если служба не работает, демон SSH не может принимать соединения.

Чтобы проверить статус службы, введите эту команду:

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

Решение. Включите службу SSH

Если система показывает, что демон SSH неактивен, вы можете запустить службу, выполнив:

Чтобы включить службу при загрузке, выполните команду:

Брандмауэр блокирует SSH-подключение

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

Убедитесь, что брандмауэр не блокирует подключения SSH, так как это может привести к ошибке "отказ в подключении".

Решение. Разрешить подключения SSH через брандмауэр

Чтобы решить проблему, о которой мы говорили выше, вы можете использовать ufw (Uncomplicated Firewall), инструмент с интерфейсом командной строки для управления конфигурацией брандмауэра.

Введите следующую команду в окне терминала, чтобы разрешить SSH-соединения:

SSH-порт закрыт

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

Если порт закрыт, сервер отказывает в соединении.

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

Чтобы получить список всех прослушиваемых портов, выполните:

Найдите в выходных данных порт 22 и проверьте, установлено ли для его СОСТОЯНИЯ значение LISTEN.

Кроме того, вы можете проверить, открыт ли конкретный порт, в данном случае порт 22:

Решение: откройте порт SSH

Чтобы разрешить порту 22 ПРОСЛУШИВАТЬ запросы, используйте команду iptables:

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

Отладка и ведение журнала SSH

Для анализа проблем с SSH в Linux можно включить подробный режим или режим отладки. Когда вы включаете этот режим, SSH распечатывает отладочные сообщения, которые помогают устранять проблемы с подключением, конфигурацией и аутентификацией.

Существует три уровня детализации:

Поэтому вместо доступа к удаленному серверу с использованием синтаксиса ssh [server_ip] добавьте параметр -v и запустите:

В качестве альтернативы вы можете использовать:

В этой статье перечислены некоторые из наиболее распространенных причин ошибки SSH "Отказано в соединении". Чтобы устранить проблему, просмотрите список и убедитесь, что все параметры настроены правильно.

Еще одна распространенная проблема, с которой вы можете столкнуться, — отказ в разрешении SSH Failed Permission Denied. Узнайте, в чем причина этой ошибки и как ее исправить, в нашей статье «Как исправить отказ в доступе к SSH с отказом в доступе (Publickey, Gssapi-Keyex, Gssapi-With-Mic)».

Secure Shell (SSH) — ключевой инструмент разработки WordPress. Он предоставляет опытным пользователям доступ к ключевым платформам и программному обеспечению, которые упрощают, ускоряют и организуют кодирование и другие задачи.

Поэтому, если вы пытаетесь использовать SSH только для того, чтобы увидеть ошибку «Отказано в соединении», вы можете начать беспокоиться. Тем не менее, это распространенная проблема, и ее вполне можно решить самостоятельно, просто устранив неполадки. Вы вернетесь к запуску команд в мгновение ока.

В этом посте мы обсудим, что такое SSH и когда его использовать. Затем мы объясним некоторые распространенные причины, по которым вам может быть отказано в подключении, в том числе в PuTTY. Наконец, мы дадим несколько советов по устранению неполадок.

Предпочитаете смотреть видеоверсию?

Что такое SSH и когда его следует использовать?

Secure Shell (SSH), также иногда называемый Secure Socket Shell, представляет собой протокол для безопасного доступа к серверу вашего сайта через незащищенную сеть. Другими словами, это способ безопасного удаленного входа на сервер с помощью предпочитаемого вами интерфейса командной строки:

Использование SSH для удаленного доступа к сайту WordPress, размещенному на Kinsta

В отличие от протокола передачи файлов (FTP), который позволяет загружать, удалять и редактировать файлы только на вашем сервере, SSH может выполнять широкий спектр задач. Например, если ошибка блокирует ваш доступ к сайту WordPress, вы можете использовать SSH для удаленного доступа к нему.

Этот протокол также позволяет использовать несколько ключевых инструментов разработчика, в том числе:

    . Командная строка WordPress. Вы можете использовать его для различных задач, включая новые установки, массовые обновления плагинов и импорт медиафайлов. . Менеджер пакетов PHP. Он позволяет вам реализовать несколько фреймворков для использования в коде вашего сайта, вытягивая необходимые библиотеки и зависимости. . Система контроля версий, используемая для отслеживания изменений в коде. Это особенно полезно для команд разработчиков, работающих вместе над одним проектом. . Менеджер пакетов JavaScript. Он включает в себя командную строку и реестр программного обеспечения JavaScript. Примечание. Для доступа к этой функции клиентам Kinsta потребуется план Enterprise.

Важно отметить, что использование SSH — это продвинутый навык. Вообще говоря, непрофессиональные пользователи WordPress должны обращаться за помощью к своим разработчикам или хостинг-провайдерам, а не пытаться решать проблемы с SSH самостоятельно.

Важно

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

Почему мне отказывают в подключении по SSH? (5 причин ошибок подключения)

К сожалению, при попытке подключения к серверу через SSH может возникнуть множество ситуаций, в результате которых может появиться сообщение об ошибке «Отказано в подключении».

Ниже приведены некоторые из наиболее распространенных проблем, которые могут вызывать проблемы у вас.

1. Ваша служба SSH не работает

Чтобы подключиться к вашему серверу с помощью SSH, на нем должен быть запущен демон SSH — программа, работающая в фоновом режиме для прослушивания и приема подключений.

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

Ошибка соединения с отказом в Терминале

Демон SSH вашего сервера может быть недоступен по самым разным причинам, включая неожиданные всплески трафика, перебои с ресурсами или даже атаку распределенного отказа в обслуживании (DDoS). В дополнение к шагам по устранению неполадок, которые мы упомянем ниже, вы можете обратиться к своему хостинг-провайдеру, чтобы определить основную причину проблемы.

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

Если командная строка возвращает статус «Не работает», то вы, вероятно, нашли причину ошибки подключения.

Kinsta удобна для разработчиков и предлагает доступ по SSH на всех тарифных планах хостинга.

2. У вас неверные учетные данные

Хотя это может показаться слишком простым, чтобы быть правдой, возможно, вы просто вводите неверные учетные данные при попытке подключения к серверу. Для запуска SSH необходимы четыре элемента информации:

  • Имя хоста. IP-адрес сервера, к которому вы пытаетесь подключиться, или ваше доменное имя.
  • Имя пользователя. Ваше имя пользователя (S)FTP.
  • Пароль. Ваш пароль (S)FTP.
  • Порт. Порт по умолчанию — 22. Однако некоторые хостинг-провайдеры (включая Kinsta) из соображений безопасности меняют номер порта SSH. Если это так, вы сможете найти его, войдя в свою панель управления MyKinsta.

Вы также можете проверить, какой порт используется для SSH, выполнив следующую команду:

Командная строка должна вернуть правильный порт.

Подпишитесь на рассылку новостей

Хотите узнать, как мы увеличили трафик более чем на 1000 %?

Присоединяйтесь к более чем 20 000 человек, которые получают нашу еженедельную рассылку с полезными советами по WordPress!

Проверьте, чтобы убедиться, что вы вводите правильные учетные данные, и примите во внимание возможность опечаток или ввода неправильного IP-адреса или порта.

3. Порт, который вы пытаетесь использовать, закрыт

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

Любой открытый порт является уязвимостью системы безопасности, так как хакеры могут попытаться использовать его и получить доступ к серверу. По этой причине неиспользуемые порты часто закрываются для предотвращения атак.

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

Эта команда должна вернуть список портов в состоянии LISTEN. В идеале вы хотите, чтобы здесь был указан порт 22 или пользовательский SSH-порт вашего сервера. Если это не так, вам нужно будет снова открыть порт, чтобы подключиться к вашему серверу.

4. SSH не установлен на вашем сервере

Как мы кратко упоминали ранее, серверы используют демоны SSH для прослушивания и принятия подключений. Поэтому, если сервер, к которому вы пытаетесь подключиться, не установлен, вы не сможете получить к нему доступ с помощью SSH.

Вообще говоря, почти у всех хостинг-провайдеров демоны SSH установлены на их серверах по умолчанию. Эта конкретная проблема чаще встречается на локальных или выделенных серверах.

5. Настройки брандмауэра препятствуют подключению SSH

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

Нужен невероятно быстрый, безопасный и удобный для разработчиков хостинг? Kinsta создан для разработчиков WordPress и предоставляет множество инструментов и мощную панель инструментов. Ознакомьтесь с нашими планами

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

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

  • dport 22: это порт назначения, которым для SSH обычно является порт 22 (напоминание: Kinsta не использует этот номер порта).
  • REJECT: это означает, что соединение с указанным пунктом назначения отклонено.
  • DROP: как и REJECT, это означает, что соединения с соответствующим портом блокируются.

Если вы выполните поиск в результатах приведенных выше команд для dport 22, вы сможете определить, блокирует ли ваш брандмауэр подключение SSH. Если это так, вам придется изменить правила для приема запросов.

Почему PuTTY сообщает об отказе в подключении?

PuTTY — это SSH-клиент. Если вы знакомы с FTP, эта платформа FileZilla эквивалентна SSH на компьютерах с Windows. Другими словами, PuTTY позволяет пользователям вводить свои учетные данные и запускать SSH-соединение:

Веб-сайт PuTTY

Если вы являетесь пользователем PuTTY и видите сообщение об отказе в соединении, причина, скорее всего, одна из перечисленных выше.

Это ошибка подключения SSH, как и любая другая, и приведенные ниже советы по устранению неполадок должны работать независимо от того, используете ли вы PuTTY, Terminal или любую другую программу для подключения к серверу с помощью SSH.

Мы использовали наши знания об эффективном управлении веб-сайтами в масштабе и превратили их в электронную книгу и видеокурс. Нажмите здесь, чтобы загрузить руководство 2020 года по управлению более чем 40 сайтами WordPress!

Как устранить ошибки подключения SSH?

Если вы столкнулись с ошибкой подключения SSH, вы можете предпринять несколько шагов для ее устранения в зависимости от причины. Вот несколько советов по устранению причин ошибки «Отказ в соединении», которые мы рассмотрели выше:

  • Если ваша служба SSH не работает.Свяжитесь с вашим хостинг-провайдером, чтобы узнать, почему ваша служба SSH не работает. Для локальных или выделенных серверов вы можете использовать команду sudo service ssh restart, чтобы попытаться запустить ее снова.
  • Если вы ввели неправильные учетные данные. Перепроверив SSH-порт с помощью команды grep Port /etc/ssh/sshd_config, попробуйте еще раз подключиться, указав правильные данные.
  • Если ваш порт SSH закрыт. Обычно это побочный эффект одной из двух причин, перечисленных ниже. Либо установите демон SSH на сервер, к которому вы хотите подключиться, либо измените правила брандмауэра, чтобы разрешить подключения к вашему порту SSH.
  • Если на вашем сервере не установлен протокол SSH. Установите инструмент SSH, например OpenSSH, на сервер, к которому вы хотите подключиться, с помощью команды sudo apt install openssh-server.
  • Если ваш брандмауэр блокирует ваше SSH-подключение. Отключите правила брандмауэра, блокирующие ваше SSH-подключение, изменив настройки целевого порта на ПРИНЯТЬ.

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

Обзор

Возможность подключения к вашему серверу с помощью SSH удобна в самых разных ситуациях. С его помощью вы можете получить доступ к своему сайту, когда вы заблокированы на панели управления WordPress, выполнять команды через WP-CLI, отслеживать изменения в коде вашего сайта с помощью Git и т. д.

Несмотря на то, что ошибка подключения SSH может быть вызвана несколькими причинами, вот некоторые из наиболее распространенных:

  1. Ваша служба SSH не работает.
  2. У вас неверные учетные данные.
  3. Порт, который вы пытаетесь использовать, закрыт.
  4. SSH не установлен на вашем сервере.
  5. Настройки брандмауэра препятствуют подключению SSH.

Экономьте время, деньги и повышайте эффективность сайта с помощью:

  • Мгновенная помощь от экспертов по хостингу WordPress, круглосуточно и без выходных.
  • Интеграция с Cloudflare Enterprise.
  • Глобальный охват аудитории благодаря 29 центрам обработки данных по всему миру.
  • Оптимизация с помощью нашего встроенного мониторинга производительности приложений.

Все это и многое другое в одном плане без долгосрочных контрактов, помощи при миграции и 30-дневной гарантии возврата денег. Ознакомьтесь с нашими планами или поговорите с отделом продаж, чтобы найти план, который подходит именно вам.

В этом руководстве рассматривается наиболее распространенная ошибка, с которой вы, вероятно, столкнетесь при работе с SSH: отказ в соединении. Читайте дальше, чтобы подробнее изучить эту проблему и различные ее решения.

Secure Shell (SSH) — это один из наиболее распространенных инструментов, используемых системным администратором. Это необходимо для управления всеми вашими серверами и выполнения повседневных задач.

Оглавление

Служба SSH не работает

Самая простая процедура устранения неполадок, которую вы можете выполнить, – это сначала убедиться, что SSH установлен в системе. Существует клиентская версия SSH (используется для удаленного взаимодействия с другими системами) и серверная версия (используется для приема входящих подключений к системе).

Чтобы убедиться, что ваш SSH-клиент установлен правильно, просто введите «ssh» в терминал.

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

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

Попытка подключиться к локальному хосту по SSH — отличный способ узнать, принимает ли ваша система в данный момент подключения.

Здесь мы получаем ужасное сообщение об ошибке «отказ в соединении». Это либо означает, что пакет SSH-сервера не установлен в системе, либо это может означать, что служба в данный момент не запущена.

Попробуем проверить статус службы SSH:

При проверке состояния демона SSH система сообщает нам, что служба не может быть найдена. Это означает, что нам нужно установить его.

В этом примере мы используем Ubuntu, поэтому мы собираемся использовать apt-get для установки пакета openssh-server. Возможно, вам придется использовать немного другую команду, в зависимости от того, какой дистрибутив вы используете.

После установки служба SSH может запуститься автоматически.Чтобы убедиться, что он запущен, еще раз проверьте статус:

Systemctl показывает нам, что служба SSH запущена (нажмите «q», чтобы выйти из этого экрана и вернуться в терминал).

Если демон SSH еще не запущен в вашей системе, вы можете запустить его с помощью:

Забудьте открыть его при запуске и решении

Запуск службы SSH каждый раз, когда она вам нужна, очевидно, немного раздражает, поэтому, если вы хотите убедиться, что ваша система открыта для автоматического приема соединений SSH при ее запуске, вы можете использовать следующую команду от имени пользователя root или с помощью sudo:

Выполнение этой команды указывает вашей системе запускать службу SSH каждый раз при загрузке компьютера. Если позже вам понадобится восстановить этот параметр, просто введите ту же команду, но с «отключить» вместо «включить».

SSH-порт не открыт

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

Маршрутизаторы обычно блокируют входящие SSH-подключения к порту 22. Вы можете использовать любой тестер переадресации портов, чтобы проверить, виден ли порт в Интернете. В противном случае подключение может быть заблокировано вашим маршрутизатором или брандмауэром вашей системы, что мы рассмотрим далее.

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

Брандмауэр блокирует порт SSH

Еще один момент, который необходимо проверить, — это брандмауэр вашей операционной системы. В Ubuntu и многих других дистрибутивах ufw (несложный брандмауэр) установлен по умолчанию, и, как правило, это один из наиболее распространенных способов быстрого выполнения команд, связанных с брандмауэром, в вашей системе.

Чтобы разрешить SSH через брандмауэр через ufw, используйте следующую команду:

Ufw — это всего лишь внешний интерфейс для брандмауэра iptables, поэтому, если вы предпочитаете использовать команду iptables (или, возможно, у вас даже не установлен ufw), вот команда iptables для разрешения входящих соединений SSH:

Если вы используете firewalld и вам нужно разрешить SSH-соединения, используйте эту команду:

SELinux блокирует SSH

Некоторые дистрибутивы, такие как Red Hat и основанные на ней, работают под управлением SELinux (Security Enhanced Linux). SELinux должен быть автоматически настроен на прослушивание порта 22 для SSH, и вы можете проверить это с помощью следующей команды:

На снимке экрана выше команда semanage показывает, что она прослушивает входящие соединения SSH через порт 22 (порт по умолчанию для SSH). Вам не нужно выполнять какие-либо дополнительные настройки, если только вы не пытаетесь изменить порт, на котором ваша система запускает службу SSH.

Если вам нужно настроить SELinux для прослушивания SSH на другом порту, вы можете использовать эту команду:

Замените «1234» на новый порт, для которого вы настроили SSH.

Обязательно перезапустите службу SSH после внесения следующих изменений:

Проблема конфликта IP-адресов

Если ваша система имеет повторяющийся IP-адрес в сети, SSH (и другие службы, зависящие от вашей сети), скорее всего, будут работать неправильно. Это всегда полезно проверить, и это довольно просто сделать с помощью команды host.

Команда host возвращает информацию об IP-адресе, который мы только что передали ей. Используйте имя хоста, чтобы определить, что вы действительно пытаетесь подключиться к нужной системе.

В Windows вы можете использовать ping -a в командной строке для достижения аналогичного результата:

Изменение открытых ключей после переустановки

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

Например, что если сервер, к которому вы обычно подключаетесь, сменил IP-адрес? Вы же не хотите вводить данные для входа в неправильную систему, которая использует прежний IP-адрес.

Если возникает подобная ситуация, ваш SSH-клиент должен предупредить вас об изменении открытых ключей. Путь $HOME/.ssh содержит все ключи от хостов, к которым ранее подключалась ваша система. Вы можете проверить файл known_hosts следующим образом:

В нашем файле есть только один хост, но даже это кажется нам тарабарщиной. Вместо того, чтобы редактировать этот файл самостоятельно, лучше использовать команду ssh-keygen для удаления определенного ключа хоста из файла.

Используйте либо IP-адрес, либо имя хоста сервера. В нашем примере ключ в нашем файле находится только с локального хоста, поэтому мы удаляем его следующим образом:

Разрешения для файлов ключей SSH

Поскольку клиент SSH считывает данные из файла known_hosts при подключении к другой системе, текущий пользователь должен иметь соответствующие права доступа к этому файлу.

Без соответствующих разрешений вы можете увидеть такую ​​ошибку:

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

Вход с правами root, если он отключен, и как его включить

Из соображений безопасности Linux почти никогда не требует, чтобы вы что-либо делали от имени пользователя root по умолчанию. Когда это возможно, вы должны использовать учетную запись с меньшими разрешениями и повышать права до root только при необходимости.

Ну, это рекомендуется в очень и очень редких случаях, а иногда вам может понадобиться просто войти в систему прямо под root. SSH по умолчанию настроен на запрет входа в систему с правами суперпользователя.

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

Прокрутите этот файл вниз, пока не увидите PermitRootLogin.

В нашей установке Ubuntu PermitRootLogin по умолчанию имеет значение «запретить пароль». Это означает, что мы можем войти в систему как пользователь root с помощью аутентификации по ключу, но не вводя пароль root.

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

Всякий раз, когда вы вносите изменения в этот файл, вы должны перезапустить службу SSH, чтобы они вступили в силу:

Предупреждение. Прежде чем редактировать файл конфигурации SSH, убедитесь, что у вас установлен очень надежный пароль root, чтобы разрешить вход root с паролем. Существуют боты, постоянно сканирующие Интернет в поисках серверов для доступа по SSH, и они будут пытаться войти в систему с учетной записью root чаще, чем с любой другой.

Вот почему SSH настроен по умолчанию, чтобы не разрешать какой-либо вход в систему root с помощью пароля. В следующем разделе мы покажем, как увидеть эти попытки подключения, и покажем реальный пример того, как постоянно выполняются атаки на наш рабочий сервер.

Отложенные запросы на подключение (флуд)

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

Проверьте наличие неудачных попыток входа с помощью этой команды:

Если у вас есть сервер, открытый для доступа к Интернету через порт 22, будет обычным делом по крайней мере несколько попыток подключения каждые 10 минут или около того только из-за того, что боты постоянно просматривают Интернет в поисках слабых серверов для взлома.< /p>

Вот файл auth.log одного из моих общедоступных серверов:

На этом снимке экрана нет ничего тревожного, так как попытки подключения каждый раз отстают как минимум на несколько секунд.

Чтобы защитить ваш сервер от атак методом перебора SSH, мы рекомендуем установить брандмауэр CSF. По умолчанию он настроен на прекращение повторных попыток SSH с одного и того же IP-адреса.Вы можете настроить эти параметры по своему вкусу, но значения по умолчанию должны хорошо подходить для большинства систем:

LF_SSHD, установленный на «5», – это максимальное количество неудачных подключений до блокировки IP-адреса.

Установка LF_SSHD_PERM на «1» делает эту блокировку постоянной.

Еще один популярный метод ограничения этих фиктивных попыток подключения – внести доверенные IP-адреса в белый список и заблокировать все остальные. Это работает только в том случае, если одни и те же IP-адреса всегда подключаются к вашему серверу по SSH. Чтобы добиться этого с помощью iptables, вы должны использовать эту команду:

Эта команда разрешает подключения SSH только из 10.1.1.1 и 10.1.1.2. В этой команде вы можете указать столько IP-адресов, сколько вам нужно, или указать всю подсеть, например 10.1.1.0/24. Обратите внимание, что политика цепочки входных данных должна быть настроена на удаление.

Использование ssh -vvv для отладки соединения SSH и проверки журналов

Получение простой ошибки, такой как "отказ в подключении", не так уж полезно для выяснения проблемы. Если вы хотите увидеть больше информации о том, что происходит во время попытки подключения SSH, вы можете использовать ssh -v.

Три буквы v в команде еще больше увеличат детализацию.

Вы получите много вывода с ключом -vvv, но вот небольшой пример того, как некоторые из них выглядят:

Ширина

Надеюсь, он напечатает ошибку, которая даст вам представление о том, что нужно исправить. Если нет, попробуйте поискать в Google сообщение об ошибке, чтобы узнать, не публиковалось ли в Интернете предложение.

Я рассмотрел большинство причин отказа в подключении по SSH и надеюсь, что это руководство окажется для вас полезным.

Читайте также: