SSH er en nettverksprotokoll som lar deg sikkert få tilgang til og administrere et eksternt system over et nettverk. Mens du koblet til en ekstern maskin via SSH, kan det hende du har støtt på feilen "tilkobling nektet". Å oppleve dette problemet kan være frustrerende, spesielt hvis du er systemadministrator og må utføre noen oppgaver på det eksterne systemet på en presserende basis.
La oss se på noen av de mulige årsakene til å få SSH-feilen "connection refused" og metoder for å løse det.
1. Sjekk om en SSH-server er installert
En mulig årsak til feilen "tilkobling nektet" er at den eksterne maskinen ikke kjører en SSH-server. Uten SSH-serveren vil ikke maskinen godta innkommende SSH-tilkoblinger, og du vil ikke kunne få tilgang til den eksternt.
Så det aller første trinnet i å feilsøke feilen er å sjekke om en SSH-server er installert på den eksterne maskinen. Bruk følgende kommando for å bekrefte SSH-serverinstallasjonen:
På Debian-baserte distribusjoner:
dpkg --list | grep ssh
På RHEL-baserte distribusjoner:
yum liste installert | grep ssh
På openSUSE:
zypper søk -i | grep ssh
På Arch-baserte distribusjoner:
pacman -Q | grep ssh
Hvis SSH-serveren er installert på den eksterne maskinen, vil du se den oppført i utdataene. Ellers må du installer OpenSSH-serveren på den eksterne maskinen du ønsker tilgang via SSH. OpenSSH er en åpen kildekode-versjon av SSH-verktøyene for ekstern tilgang til og kontroll av systemer.
For å installere OpenSSH-serveren, bruk følgende kommandoer:
På Debian-baserte distribusjoner:
sudo apt installer openssh-server
På RHEL-baserte distribusjoner:
sudo yum installer openssh-server
På openSUSE:
sudo zypper installer openssh
På Arch-baserte distribusjoner:
pacman -S openssh
2. Sjekk SSH Service Status
En annen grunn til å få feilen "tilkobling nektet" kan være at SSH-tjenesten er deaktivert eller ikke kjører på den eksterne maskinen. Når du er sikker på at SSH-serveren er installert, er det andre du må sjekke statusen til serveren.
sudo systemctl status sshd
Hvis tjenesten er oppe og kjører, vil utgangen indikere det som aktiv (løper). Ellers vil du se noe lignende inaktiv (død).
Hvis SSH-serveren ikke kjører, kan du starte den manuelt ved å bruke følgende kommando:
sudo systemctl start sshd
Du kan også aktivere tjenesten til å starte automatisk ved oppstart med:
sudo systemctl aktiver sshd
3. Sjekk SSH-porten
Som standard kjører SSH-serveren på port 22. Imidlertid kan man endre standardporten. Derfor, hvis du mottar SSH-feilen "tilkobling nektet", kan det være fordi du prøver å koble til SSH-serveren på standardport 22 mens den kjører på en annen port.
Du kan bruk netstat-kommandoen med grep for å finne porten SSH-serveren lytter på:
sudo netstat -plntu | grep ssh
Du kan også finne SSH-porten fra sshd_config fil ved å bruke følgende kommando:
grep port /etc/ssh/sshd_config
Etter å ha identifisert den riktige SSH-porten, prøv å koble til det eksterne systemet ved hjelp av den spesifikke porten.
4. Sjekk systembrannmuren
De fleste tilkoblingsproblemene oppstår på grunn av at maskinens brannmur blokkerer noen porter eller tjenester. Hvis den eksterne maskinen har SSH-serveren installert og kjører, er neste trinn å sjekke brannmuren.
For å finne ut om brannmuren blokkerer tilkoblingen, deaktiver brannmuren midlertidig ved å bruke følgende kommandoer:
På Debian- og Arch-baserte Linux-distribusjoner:
sudo ufw deaktiver
På RHEL-baserte distribusjoner og openSUSE:
sudo systemctl deaktiver brannmur
Hvis feilen ikke vises etter at brannmuren er deaktivert, betyr det at brannmuren blokkerte forbindelsen. I dette tilfellet aktiverer du brannmuren på nytt og legger til en regel som tillater SSH.
På Debian- og Arch-baserte Linux-distribusjoner, bruk følgende kommando for å tillate SSH inn UFW-brannmuren:
sudo ufw tillat ssh
Alternativt kan du også tillate SSH etter portnummeret i brannmuren. La oss si at SSH-serveren bruker port 5555, så vil du bruke følgende kommando for å tillate det i brannmuren:
sudo ufw tillate 5555
For å bekrefte om regelen har blitt lagt til, kontroller UFW-statusen:
sudo ufw status
På RHEL-baserte distribusjoner og openSUSE, bruk følgende kommando for å tillate SSH i brannmuren:
sudo brannmur-cmd --permanent --add-service=ssh
For å tillate SSH etter portnummer, bruk følgende kommando:
sudo brannmur-cmd --permanent --add-port={port}/tcp
For en SSH-server som kjører på port 4444, vil kommandoen være:
sudo brannmur-cmd --permanent --add-port=4444/tcp
For å bekrefte at regelen ble lagt til i brannmuren, kjør:
sudo brannmur-cmd --list-all
5. Løs IP-adressekonflikter
Det er også en sjanse for at SSH-feilen "tilkobling nektet" oppstår på grunn av at SSH-serverens IP er i konflikt med et annet systems IP i nettverket. Dette skjer når to systemer på et nettverk hevder å ha samme IP-adresse, noe som resulterer i en IP-konflikt.
For å bekrefte om det er en IP-konflikt i nettverket ditt, bruk arp-scan-verktøyet som følger:
arp-scan [nettverks-id]
Hvis det er en IP-konflikt, vil du se den dupliserte IP-adressen i utdataene. Skjermbildet nedenfor er et eksempel på en IP-konflikt i et nettverk:
For å unngå IP-konflikter, sørg for at ingen enheter har statiske IP-adresser som overlapper med DHCP-pooladressene.
Bonustips: Kjør SSH i Verbose Mode
Når du støter på en SSH-feil, prøv å kjøre ssh-kommandoen i detaljert modus for å spore opp problemet. For å kjøre SSH i detaljert modus, bruk ssh-kommandoen med -vvv alternativ som følger:
ssh -vvv brukernavn@ip_adresse
I detaljert modus vil du se feilsøkingsmeldinger i hvert trinn av tilkoblingen som vil hjelpe deg å forstå hvor problemet ligger.
Feilsøking av SSH-feilen "Connection Refused" på Linux
Ved å identifisere de potensielle årsakene til SSH-tilkoblingsfeilen og implementere de foreslåtte løsningene, vil du kunne feilsøke og løse SSH-feilen "tilkobling nektet". I tillegg til disse trinnene, sørg for at du kobler til riktig IP-adresse og bruker riktig påloggingsinformasjon.
For å gjøre den eksterne tilkoblingen sikrere, kan du sette opp tofaktorautentisering for SSH på Linux.