Как да отстранявате грешки в SSH връзки

How Debug Ssh Connections



Този урок ще разгледа някои бързи методи и техники, които можете да използвате за диагностициране на различни SSH връзки, включително когато не можете да се свържете с SSH, грешки при удостоверяване и други.

ЗАБЕЛЕЖКА: Преди да започнете, уверете се, че устройството, към което искате да се свържете, е онлайн и грешката не е резултат от липсата на устройството.







Проблем 1: SSH услугата не работи

Честа причина за грешки в SSH връзката е услугата, която не работи на отдалечения хост. Това може да се дължи на случайно изключване на услугата или не стартиране на услугата след рестартиране на системата.



За да проверите дали SSH услугата работи, използвайте системния мениджър, като използвате командата:



sudosystemctl статус sshd

Горната команда трябва да докладва дали услугата работи или не, както е показано на екранните снимки по -долу.







Решение

За да разрешите проблеми с SSH, причинени от неработещата услуга, използвайте системата, за да стартирате услугата. Ако услугата отговори с грешки, проверете регистрационните файлове и отстранете проблемите, докладвани в дневника.

Използвайте командата по -долу, за да проверите регистрационните файлове на услугите.

захващане 'sshd' /където/дневник/auth.log

Използвайте командата по -долу, за да стартирате или спрете SSH услугата с помощта на systemd.

sudosystemctl стартира sshd

Въпрос 2: SSH на нестандартен порт

Вторият често срещан проблем при отстраняване на грешки в SSH връзки е използването на нестандартен порт. Ако SSH работи на друг порт, различен от порт 22 по подразбиране, няма да се свържете с отдалечения хост, освен ако изрично не посочите порта, на който SSH работи.

За да видите порта, на който работи SSH, използвайте инструмент като netstat, както е показано по -долу:

[стотици@centos8 ~]$sudo netstat -ptln | захващане ssh
tcp0 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, проверете регистрационните файлове с помощта на командата:

sudojournalctl-Tsshd

Тази команда трябва да върне грешка като тази, показана по-долу, показваща дали друг процес използва SSH-свързан порт.

sshd[110611]: error: Свързване към порта80на 0.0.0.0 неуспешно: Адресът вечевизползвайте

Добре е да се гарантира, че грешката при свързване на порта е причинена от друга услуга, а не от мерки за сигурност като SELinux.

Решение

Има различни начини, по които можете да разрешите този проблем. Те включват:

Първият е да свържете SSH услугата към различен порт. Можете да направите това, като редактирате конфигурационния файл на SSH. Например, променете записа на порт на порт 3009, както е показано в командите:

sudo нано /и т.н./ssh/sshd_config
Пристанище3009

Друг метод, който можете да използвате за разрешаване на този проблем, е да спрете услугата, използвайки SSH порта. Например, спрете услугата apache, използвайки порт 80 като:

sudosystemctl спре httpd
sudosystemctl деактивирайте httpd

Проблем 4: Защитна стена

Ако сте опитали всички горепосочени методи и все още нямате SSH връзка, можете да преминете към следващата възможна причина за проблема: Ограничения на защитната стена. В зависимост от метода на защитната стена, който използвате (UFW или Iptables), трябва да се уверите, че защитната стена позволява SSH връзки.

Решение

Правилата за защитната стена са широки и могат да варират в зависимост от конфигурацията на системата. По този начин не мога да обхвана всеки аспект. По -долу обаче е просто решение, за да се гарантира, че услугата SSH е разрешена на защитната стена на UFW.

sudoufw позволяват<ssh_port> /tcp

Можете също така да нулирате всички правила на UFW и да започнете отначало. Това ще ви позволи да отстранявате неизправности във връзките на защитната стена от нулата.

sudoufw нулиране

Проблем 5: Деактивирани пароли за влизане

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

За да проверите дали паролите са разрешени, поставете конфигурацията на ssh като:

[стотици@centos8]$sudo захващанеPasswordAuthentication/и т.н./ssh/sshd_config
#PasswordAuthentication да
PasswordAuthenticationда
# PasswordAuthentication. В зависимост от вашата PAM конфигурация,
# PAM удостоверяване, след това активирайте това, но задайте PasswordAuthentication

Горният изход показва, че влизането с парола е разрешено.

Решение

За да разрешите горния проблем, можете да използвате два метода:

Първо, ако сте задали стойност не, променете стойността на PasswordAuthentication на да и рестартирайте услугата ssh.

Другият метод е да създадете двойка ключ-стойност ssh и да я използвате за влизане в сървъра. За да научите как да създадете двойка ключ-стойност ssh, използвайте следното ръководство.

https://linuxhint.com/find-ssh-public-key/

https://linuxhint.com/use-ssh-copy-id-command/

Заключение

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