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.