Jak naprawić błąd SSH „Odmowa połączenia” w systemie Linux
SSH to protokół sieciowy, który umożliwia bezpieczny dostęp do zdalnego systemu i zarządzanie nim przez sieć. Podczas łączenia się ze zdalną maszyną 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 na zdalnym komputerze 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:
yum list installed | grep ssh
W openSUSE:
zypper search -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 zainstalować serwer OpenSSH na zdalnym komputerze, do którego 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 install openssh-server
W openSUSE:
sudo zypper install openssh
W dystrybucjach opartych na Arch:
pacman -S openssh
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 zdalnym komputerze. 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, wyjście wskaże ją jako aktywną (działającą) . W przeciwnym razie zobaczysz coś w rodzaju nieaktywnego (martwego) .
Jeśli serwer SSH nie jest uruchomiony, możesz go uruchomić ręcznie za pomocą następującego polecenia:
sudo systemctl start sshd
Możesz także włączyć automatyczne uruchamianie usługi przy starcie za pomocą:
sudo systemctl enable 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 „odmowa połączenia” SSH, może to być spowodowane tym, że próbujesz połączyć się z serwerem SSH na domyślnym porcie 22, gdy działa on na innym porcie.
Możesz użyć polecenia netstat z grep, aby znaleźć port, na którym nasłuchuje serwer SSH:
sudo netstat -plntu | grep ssh
Możesz także znaleźć port SSH z pliku sshd_config za pomocą następującego polecenia:
grep port /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ź 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 disable
W przypadku dystrybucji opartych na RHEL i openSUSE:
sudo systemctl disable 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 SSH w zaporze UFW:
sudo ufw allow 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 allow 5555
Aby sprawdzić, czy reguła została pomyślnie dodana, sprawdź status UFW:
sudo ufw status
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ąż konflikty adresów IP
Istnieje również prawdopodobieństwo wystąpienia błędu „odmowa połączenia” SSH 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 adresów 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:
arp-scan [network-id]
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 opcją -vvv w następujący sposób:
ssh -vvv username@ip_address
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 i rozwiązać błąd „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.
Dodaj komentarz