Jak debugować połączenia SSH

Jak debugować połączenia SSH
Ten samouczek przejdzie kilka szybkich metod i technik, których możesz użyć do diagnozowania różnych połączeń SSH, w tym kiedy nie możesz połączyć się z SSH, błędami uwierzytelniania i takimi.

NOTATKA: Przed rozpoczęciem upewnienia się, że urządzenie, z którym chcesz się połączyć, jest online, a błąd nie jest wynikiem niedostępności urządzenia.

Problem 1: Usługa SSH nie działa

Wspólną przyczyną błędów połączenia SSH jest usługa nie działająca na zdalnym hoście. Może to wynikać z przypadkowego zamknięcia lub usługi, które nie rozpoczynają się po ponownym uruchomieniu systemu.

Aby sprawdzić, czy usługa SSH działa, użyj menedżera systemu za pomocą polecenia:

SUDO SystemCtl Status Sshd

Powyższe polecenie powinno zgłosić, jeśli usługa działa, czy nie, jak pokazano na zrzutach ekranu poniżej.

Rozwiązanie

Aby rozwiązać problemy SSH spowodowane przez nie działa usługa, użyj systemu, aby rozpocząć usługę. Jeśli usługa odpowiada błędom, sprawdź dzienniki i napraw problemy zgłoszone w dzienniku.

Użyj poniższej komendy, aby sprawdzić dzienniki usług.

GREP „sshd”/var/log/auth.dziennik

Użyj poniższego polecenia, aby uruchomić lub zatrzymać usługę SSH za pomocą SystemD.

sudo systemctl start sshd

Problem 2: SSH na niestandardowym porcie

Drugim powszechnym problemem podczas debugowania połączeń SSH jest użycie niestandardowego portu. Jeśli SSH działa na innym porcie innym niż w porcie domyślnym 22, nie połączysz się z hostem zdalnym.

Aby wyświetlić port, na którym działa SSH, użyj narzędzia takiego jak NetStat, jak poniżej:

[centos@centos8 ~] $ sudo netstat -ptln | Grep Ssh
TCP 0 0 0.0.0.0:56 0.0.0.0:* Posłuchaj 1131/sshd
tcp6 0 0 :: 56 :::* posłuchaj 1131/sshd

Powyższe wyjście pokazuje, na którym porcie usługa SSH działa. W takim przypadku jest to port 56.

Rozwiązanie

Aby rozwiązać ten problem, możesz użyć informacji z NetStat, aby wyraźnie określić port w poleceniu SSH jako:

SSH Nazwa użytkownika@ip -p 56

Problem 3: Kolejna usługa korzystająca z tego samego portu

Inną przyczyną błędów połączenia SSH jest to, czy inna usługa lub proces używa również tego samego portu, co usługa SSH. Na przykład, jeśli SSH jest wyraźnie określony do uruchomienia w porcie 80 (straszny pomysł), usługa taka jak Apache może korzystać z tego samego portu.

Aby wyświetlić, czy inny proces używa tego samego portu co SSH, sprawdź dzienniki za pomocą polecenia:

sudo journactl -t sshd

To polecenie powinno zwrócić błąd, taki jak pokazany poniżej, wskazując, czy inny proces używa portu związanego z SSH.

SSHD [110611]: Błąd: powiązaj z portem 80 na 0.0.0.0 nieudane: adres już w użyciu

Dobrze jest upewnić się, że błąd wiązania portu jest spowodowany przez inną usługę, a nie środki bezpieczeństwa, takie jak Selinux.

Rozwiązanie

Istnieją różne sposoby użycia do rozwiązania tego problemu. Obejmują one:

Pierwszym z nich jest powiązanie usługi SSH z innym portem. Możesz to zrobić, edytując plik konfiguracyjny SSH. Na przykład zmień wpis portu na port 3009, jak pokazano w poleceń:

sudo nano/etc/ssh/sshd_config
Port 3009

Inną metodą, której możesz użyć do rozwiązania tego problemu, jest zatrzymanie usługi za pomocą portu SSH. Na przykład zatrzymaj usługę Apache za pomocą portu 80 jako:

sudo systemctl stop httpd
sudo systemctl wyłącz httpd

Wydanie 4: zapora ogniowa

Jeśli wypróbowałeś wszystkie powyższe metody i nadal nie ma połączenia SSH, możesz przejść do następnej możliwej przyczyny problemu: Ograniczenia zapory. W zależności od używanej metody zapory (UFW lub IPTABLES), musisz upewnić się, że zapora umożliwia połączenia SSH.

Rozwiązanie

Reguły zapory są szerokie i mogą się różnić w zależności od konfiguracji systemu. Dlatego nie mogę pokryć każdego aspektu. Jednak następujące jest proste rozwiązanie, aby upewnić się, że usługa SSH jest dozwolona w zaporze UFW.

Sudo UFW zezwalaj /TCP

Możesz także zresetować wszystkie zasady UFW i zacząć od nowa. To pozwoli ci rozwiązywać problemy z połączeniem zapory od zera.

sudo ufw reset

Problem 5: Nieprawidłowe loginy haseł

Czasami możesz skonfigurować SSH, aby nie akceptować loginów haseł i używać tylko uwierzytelniania klucza publicznego. Może to spowodować problem, jeśli klucz publiczny nie jest dostępny na serwerze lub brakuje pary klucza prywatnego.

Aby sprawdzić, czy loginy haseł są dozwolone, CAT SSH Config jako:

[centos@centos8] $ sudo grep hasłoAuthentication/etc/ssh/sshd_config
#PassWordAuthentication Tak
HasłoAuthentication Tak
# HasłoAuthentication. W zależności od konfiguracji PAM,
# Uwierzytelnianie PAM, a następnie włącz to, ale ustaw hasłoAuthentication

Powyższe wyjście pokazuje, że loginy haseł są dozwolone.

Rozwiązanie

Aby rozwiązać powyższy problem, możesz użyć dwóch metod:

Po pierwsze, jeśli masz ustawioną wartość na nie, zmień wartość hasła Automatyka na tak i uruchom ponownie usługę SSH.

Drugą metodą jest utworzenie pary wartości klucza SSH i użycie jej do logowania się na serwerze. Aby dowiedzieć się, jak tworzyć parę wartości kluczy SSH, użyj następującego przewodnika.

https: // linuxhint.com/Find-Ssh-Public-key/

https: // linuxhint.com/użyj-ssh-copy-id-command/

Wniosek

W tym szybkim przewodniku omówiliśmy główne przyczyny błędów połączenia SSH i sposób ich rozwiązania. Chociaż ten przewodnik obejmuje częste problemy, możesz znaleźć błędy specyficzne dla systemu w oparciu o konfigurację i uprawnienia.