ЗАМЕТКА: Прежде чем начать, убедитесь, что устройство, к которому вы хотите подключиться, находится в сети и ошибка не является результатом недоступности устройства.
Проблема 1: служба SSH не работает
Распространенной причиной ошибок соединения SSH является служба, не работающая на удаленном хосте. Это может быть из-за случайного отключения службы или из-за того, что служба не запускается после перезагрузки системы.
Чтобы проверить, запущена ли служба SSH, используйте системный менеджер с помощью команды:
судоsystemctl status sshd
Приведенная выше команда должна сообщать, запущена служба или нет, как показано на снимках экрана ниже.
Решение
Чтобы решить проблемы SSH, вызванные неработающей службой, используйте систему для запуска службы. Если служба отвечает ошибками, проверьте журналы и исправьте проблемы, указанные в журнале.
Используйте команду ниже, чтобы проверить журналы обслуживания.
рукоятка 'sshd' /куда/бревно/auth.logИспользуйте команду ниже, чтобы запустить или остановить службу SSH с помощью systemd.
судоsystemctl start sshdПроблема 2: SSH на нестандартном порте
Вторая распространенная проблема при отладке SSH-соединений - использование нестандартного порта. Если SSH работает на другом порту, отличном от порта по умолчанию 22, вы не подключитесь к удаленному хосту, если явно не укажете порт, на котором работает SSH.
Чтобы просмотреть порт, на котором работает SSH, используйте такой инструмент, как netstat, как показано ниже:
[сотни@centos8 ~]$судо netstat -ptln | рукоятка sshTCP0 00.0.0.0:560.0.0.0:*СЛУШАТЬ1131/sshd
tcp60 0:::56:::*СЛУШАТЬ1131/sshd
Приведенный выше вывод показывает, на каком порту работает служба SSH. В данном случае это 56 порт.
Решение
Чтобы решить эту проблему, вы можете использовать информацию из netstat, чтобы явно указать порт в вашей команде ssh как:
sshимя пользователя@ip -п 56Проблема 3: другая служба, использующая тот же порт
Другая причина ошибок соединения SSH - если другая служба или процесс также использует тот же порт, что и служба SSH. Например, если SSH явно указан для работы на порту 80 (ужасная идея), такая служба, как Apache, может использовать тот же порт.
Чтобы узнать, использует ли другой процесс тот же порт, что и SSH, проверьте журналы с помощью команды:
судоjournalctl-tsshdЭта команда должна возвращать ошибку, подобную показанной ниже, указывая, использует ли другой процесс связанный с SSH порт.
sshd[110611]: error: привязать к порту80на 0.0.0.0 не удалось: адрес ужевиспользоватьХорошо убедиться, что ошибка привязки порта вызвана другой службой, а не мерами безопасности, такими как SELinux.
Решение
Есть несколько способов решить эту проблему. Это включает:
Первый - привязать службу SSH к другому порту. Вы можете сделать это, отредактировав файл конфигурации SSH. Например, измените запись порта на порт 3009, как показано в командах:
судо нано /так далее/ssh/sshd_configПорт3009
Другой метод, который вы можете использовать для решения этой проблемы, - это остановить службу, используя порт SSH. Например, остановите службу apache, используя порт 80 как:
судоsystemctl остановить httpdсудоsystemctl отключить httpd
Проблема 4: Брандмауэр
Если вы попробовали все вышеперечисленные методы, но SSH-соединение по-прежнему отсутствует, вы можете перейти к следующей возможной причине проблемы: ограничения брандмауэра. В зависимости от используемого вами метода брандмауэра (UFW или Iptables) вам необходимо убедиться, что брандмауэр разрешает SSH-соединения.
Решение
Правила брандмауэра широки и могут различаться в зависимости от конфигурации системы. Таким образом, я не могу охватить все аспекты. Однако следующее является простым решением для обеспечения того, чтобы служба SSH была разрешена на брандмауэре UFW.
судоufw разрешить<ssh_port> /TCPВы также можете сбросить все правила UFW и начать заново. Это позволит вам устранять неполадки подключения брандмауэра с нуля.
судосброс ufwПроблема 5: отключенные парольные входы
Иногда вы можете настроить SSH так, чтобы он не принимал входы по паролю и использовал только аутентификацию с открытым ключом. Это может вызвать проблему, если открытый ключ недоступен на сервере или отсутствует ваша пара закрытых ключей.
Чтобы проверить, разрешен ли вход по паролю, введите конфигурацию ssh как:
[сотни@centos8]$судо рукояткаПарольАутентификация/так далее/ssh/sshd_config#PasswordAuthentication да
ПарольАутентификацияда
# PasswordAuthentication. В зависимости от вашей конфигурации PAM,
# PAM-аутентификация, затем включите это, но установите PasswordAuthentication
Приведенный выше вывод показывает, что вход по паролю разрешен.
Решение
Чтобы решить указанную выше проблему, вы можете использовать два метода:
Во-первых, если у вас установлено значение no, измените значение PasswordAuthentication на yes и перезапустите службу ssh.
Другой метод - создать пару ключ-значение ssh и использовать ее для входа на сервер. Чтобы узнать, как создать пару ключ-значение ssh, используйте следующее руководство.
https://linuxhint.com/find-ssh-public-key/
https://linuxhint.com/use-ssh-copy-id-command/
Заключение
В этом кратком руководстве мы обсудили основные причины ошибок соединения SSH и способы их устранения. Хотя в этом руководстве рассматриваются общие проблемы, вы можете найти ошибки, характерные для вашей системы, в зависимости от конфигурации и разрешений.