Jak debugować połączenia SSH

How Debug Ssh Connections



W tym samouczku omówimy kilka szybkich metod i technik, których możesz użyć do diagnozowania różnych połączeń SSH, w tym sytuacji, gdy nie możesz połączyć się z SSH, błędów uwierzytelniania i tym podobnych.

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







Problem 1: Usługa SSH nie działa

Częstą przyczyną błędów połączenia SSH jest to, że usługa nie działa na zdalnym hoście. Może to być spowodowane przypadkowym zamknięciem usługi lub brakiem uruchomienia usługi po ponownym uruchomieniu systemu.



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



sudosystemctl status sshd

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







Rozwiązanie

Aby rozwiązać problemy z SSH spowodowane niedziałającą usługą, użyj systemu do uruchomienia usługi. Jeśli usługa odpowiada błędami, sprawdź logi i napraw problemy zgłoszone w logu.

Użyj poniższego polecenia, aby sprawdzić dzienniki usług.

chwyt 'shd' /gdzie/Dziennik/autor.log

Użyj poniższego polecenia, aby uruchomić lub zatrzymać usługę SSH przy użyciu systemd.

sudosystemctl uruchom 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 niż domyślny port 22, nie będziesz łączyć się ze zdalnym hostem, chyba że wyraźnie określisz port, na którym działa SSH.

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

[setki@centos8 ~]$sudo netstat -ptln | chwyt cisza
tcp0 00.0.0.0:560.0.0.0:*SŁUCHAĆ1131/sshd
tcp60 0:::56:::*SŁUCHAĆ1131/sshd

Powyższe dane wyjściowe pokazują, na którym porcie działa usługa SSH. W tym przypadku jest to port 56.

Rozwiązanie

Aby rozwiązać ten problem, możesz użyć informacji z netstat, aby jawnie określić port w poleceniu ssh jako:

ciszaNazwa Użytkownika@IP -P 56

Zagadnienie 3: Inna usługa korzystająca z tego samego portu

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

Aby zobaczyć, czy inny proces używa tego samego portu co SSH, sprawdź logi za pomocą polecenia:

sudodziennika-Tsshd

To polecenie powinno zwrócić błąd podobny do pokazanego poniżej, wskazujący, czy inny proces używa portu związanego z SSH.

sshd[110611]: błąd: Powiąż z portem80w dniu 0.0.0.0 nie powiodło się: Adres jużwposługiwać się

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

Rozwiązanie

Istnieje wiele sposobów 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 Port na port 3009, jak pokazano w poleceniach:

sudo nano /itp/cisza/sshd_config
Port3009

Inną metodą rozwiązania tego problemu jest zatrzymanie usługi przy użyciu portu SSH. Na przykład zatrzymaj usługę Apache przy użyciu portu 80 jako:

sudosystemctl zatrzymaj httpd
sudosystemctl wyłącz httpd

Zagadnienie 4: Zapora

Jeśli wypróbowałeś wszystkie powyższe metody i nadal nie masz 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) należy upewnić się, że zapora zezwala na 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ę omówić każdego aspektu. Poniżej przedstawiono proste rozwiązanie zapewniające, że usługa SSH jest dozwolona w zaporze UFW.

sudoufw zezwól<ssh_port> /tcp

Możesz także zresetować wszystkie zasady UFW i zacząć od nowa. Umożliwi to rozwiązywanie problemów z połączeniami zapory od podstaw.

sudoresetowanie ufw

Problem 5: Wyłączone logowanie hasłem

Czasami można skonfigurować SSH, aby nie akceptował logowania za pomocą hasła i używał tylko uwierzytelniania z kluczem publicznym. Może to spowodować problem, jeśli klucz publiczny nie jest dostępny na serwerze lub brakuje pary kluczy prywatnych.

Aby sprawdzić, czy logowanie za pomocą hasła jest dozwolone, cat the ssh config jako:

[setki@centos8]$sudo chwytUwierzytelnianie hasłem/itp/cisza/sshd_config
#PasswordUwierzytelnianie tak
Uwierzytelnianie hasłemtak
# Uwierzytelnianie hasła. W zależności od konfiguracji PAM,
# Uwierzytelnianie PAM, następnie włącz to, ale ustaw PasswordAuthentication

Powyższe dane wyjściowe pokazują, że logowanie za pomocą hasła jest dozwolone.

Rozwiązanie

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

Po pierwsze, jeśli masz ustawioną wartość no, zmień wartość PasswordAuthentication na yes i uruchom ponownie usługę ssh.

Drugą metodą jest utworzenie pary klucz-wartość ssh i użycie jej do zalogowania się na serwerze. Aby dowiedzieć się, jak utworzyć parę klucz-wartość ssh, skorzystaj z tego przewodnika.

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

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

Wniosek

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