SSH to protokół sieciowy, który umożliwia bezpieczny dostęp do zdalnego systemu i zarządzanie nim przez sieć. Podczas łączenia się ze zdalnym komputerem przez SSH mógł wystąpić błąd „odmowa połączenia”. Ten problem może być frustrujący, zwłaszcza jeśli jesteś administratorem systemu i musisz pilnie wykonać pewne zadania w systemie zdalnym.
Przyjrzyjmy się niektórym możliwym przyczynom błędu SSH „odmowa połączenia” i metodom jego rozwiązania.
1. Sprawdź, czy jest zainstalowany serwer SSH
Jedną z możliwych przyczyn błędu „odmowa połączenia” jest to, że zdalna maszyna nie działa serwer SSH. Bez serwera SSH maszyna nie będzie akceptować przychodzących połączeń SSH i nie będziesz mieć do niej zdalnego dostępu.
Tak więc pierwszym krokiem w rozwiązaniu problemu z błędem jest sprawdzenie, czy serwer SSH jest zainstalowany na zdalnym komputerze. Użyj następującego polecenia, aby zweryfikować instalację serwera SSH:
W przypadku dystrybucji opartych na Debianie:
dpkg --list | grep ssh
W przypadku dystrybucji opartych na RHEL:
lista yum zainstalowana | grep ssh
W openSUSE:
wyszukiwanie zip -i | grep ssh
W dystrybucjach opartych na Arch:
pacman -Q | grep ssh
Jeśli serwer SSH jest zainstalowany na zdalnym komputerze, zobaczysz go na liście danych wyjściowych. W przeciwnym razie musisz zainstaluj serwer OpenSSH na zdalnej maszynie chcesz uzyskać dostęp przez SSH. OpenSSH to otwarta wersja narzędzi SSH do zdalnego dostępu i kontrolowania systemów.
Aby zainstalować serwer OpenSSH, użyj następujących poleceń:
W przypadku dystrybucji opartych na Debianie:
sudo apt install openssh-server
W przypadku dystrybucji opartych na RHEL:
sudo yum zainstaluj serwer openssh
W openSUSE:
sudo zypper zainstaluj openssh
W dystrybucjach opartych na Arch:
pacman -S otwiera sh
2. Sprawdź stan usługi SSH
Innym powodem błędu „odmowa połączenia” może być to, że usługa SSH jest wyłączona lub nie działa na komputerze zdalnym. Po upewnieniu się, że serwer SSH jest zainstalowany, drugą rzeczą, którą musisz sprawdzić, jest status serwera.
sudo systemctl status sshd
Jeśli usługa jest uruchomiona, dane wyjściowe wskażą ją jako aktywny (bieg). W przeciwnym razie zobaczysz coś takiego nieaktywny (martwy).
Jeśli serwer SSH nie jest uruchomiony, możesz go uruchomić ręcznie za pomocą następującego polecenia:
sudo systemctl uruchom sshd
Możesz także włączyć automatyczne uruchamianie usługi przy starcie za pomocą:
sudo systemctl włącz sshd
3. Sprawdź port SSH
Domyślnie serwer SSH działa na porcie 22. Można jednak zmienić domyślny port. Dlatego jeśli pojawi się błąd SSH „odmowa połączenia”, może to być spowodowane tym, że próbujesz połączyć się z serwerem SSH na domyślnym porcie 22, podczas gdy jest on uruchomiony na innym porcie.
Możesz użyj polecenia netstat z grep, aby znaleźć port, na którym nasłuchuje serwer SSH:
sudo netstat -plntu | grep ssh
Port SSH można również znaleźć w pliku sshd_config plik za pomocą następującego polecenia:
port grep /etc/ssh/sshd_config
Po zidentyfikowaniu właściwego portu SSH spróbuj połączyć się ze zdalnym systemem za pomocą tego konkretnego portu.
4. Sprawdź swoją zaporę systemową
Większość problemów z łącznością wynika z tego, że zapora komputera blokuje niektóre porty lub usługi. Jeśli zdalna maszyna ma zainstalowany i uruchomiony serwer SSH, następnym krokiem jest sprawdzenie zapory.
Aby dowiedzieć się, czy zapora blokuje połączenie, tymczasowo wyłącz zaporę za pomocą następujących poleceń:
W dystrybucjach Linuksa opartych na Debianie i Arch:
sudo ufw wyłącz
W przypadku dystrybucji opartych na RHEL i openSUSE:
sudo systemctl wyłącz firewalld
Jeśli błąd nie pojawia się po wyłączeniu zapory, oznacza to, że zapora blokowała połączenie. W takim przypadku ponownie włącz zaporę i dodaj regułę zezwalającą na SSH.
W dystrybucjach systemu Linux opartych na Debianie i Arch użyj następującego polecenia, aby zezwolić na połączenie SSH firewall UFW:
sudo ufw zezwól na ssh
Alternatywnie możesz również zezwolić na SSH na podstawie numeru portu w zaporze. Powiedzmy, że serwer SSH używa portu 5555, wtedy użyjesz następującego polecenia, aby zezwolić na to w zaporze:
sudo ufw zezwól na 5555
Aby sprawdzić, czy reguła została pomyślnie dodana, sprawdź status UFW:
Sudo ufw stan
W dystrybucjach opartych na RHEL i openSUSE użyj następującego polecenia, aby zezwolić na SSH w zaporze:
sudo firewall-cmd --permanent --add-service=ssh
Aby zezwolić na SSH według numeru portu, użyj następującego polecenia:
sudo firewall-cmd --permanent --add-port={port}/tcp
W przypadku serwera SSH działającego na porcie 4444 polecenie wyglądałoby następująco:
sudo firewall-cmd --permanent --add-port=4444/tcp
Aby zweryfikować pomyślne dodanie reguły w zaporze, uruchom:
sudo firewall-cmd --list-all
5. Rozwiązywanie konfliktów adresów IP
Istnieje również prawdopodobieństwo wystąpienia błędu SSH „odmowa połączenia” z powodu konfliktu adresu IP serwera SSH z adresem IP innego systemu w sieci. Dzieje się tak, gdy dwa systemy w sieci twierdzą, że mają ten sam adres IP, co powoduje konflikt IP.
Aby potwierdzić, czy w Twojej sieci występuje konflikt adresów IP, użyj narzędzia arp-scan w następujący sposób:
skanowanie arp [identyfikator sieci]
W przypadku konfliktu adresów IP w danych wyjściowych zostanie wyświetlony zduplikowany adres IP. Poniższy zrzut ekranu jest przykładem konfliktu adresów IP w sieci:
Aby uniknąć konfliktów adresów IP, upewnij się, że żadne urządzenia nie mają statycznych adresów IP, które pokrywają się z adresami puli DHCP.
Dodatkowa wskazówka: uruchom SSH w trybie pełnym
Za każdym razem, gdy napotkasz błąd SSH, spróbuj uruchomić polecenie ssh w trybie pełnym, aby wyśledzić problem. Aby uruchomić SSH w trybie pełnym, użyj polecenia ssh z plikiem -vvv opcja w następujący sposób:
ssh -vvv nazwa_użytkownika@adres_ip
W trybie szczegółowym na każdym etapie połączenia zobaczysz komunikaty debugowania, które pomogą Ci zrozumieć, gdzie leży problem.
Rozwiązywanie problemów z błędem SSH „Odmowa połączenia” w systemie Linux
Identyfikując potencjalne przyczyny błędu połączenia SSH i wdrażając sugerowane rozwiązania, będziesz w stanie rozwiązać problem z błędem „odmowa połączenia” SSH. Oprócz tych kroków upewnij się, że łączysz się z właściwym adresem IP i używasz właściwych danych logowania.
Aby Twoje zdalne połączenie było bezpieczniejsze, możesz skonfigurować uwierzytelnianie dwuskładnikowe dla SSH w systemie Linux.