SSH er en netværksprotokol, der giver dig mulighed for sikker adgang til og administrere et fjernsystem over et netværk. Mens du oprettede forbindelse til en ekstern maskine via SSH, er du muligvis stødt på fejlen "forbindelse nægtet". At opleve dette problem kan være frustrerende, især hvis du er systemadministrator og skal udføre nogle opgaver på fjernsystemet på et presserende grundlag.
Lad os se på nogle af de mulige årsager til at få SSH-fejlen "forbindelse nægtet" og metoder til at løse det.
1. Tjek om en SSH-server er installeret
En mulig årsag til fejlen "forbindelse afvist" er, at fjernmaskinen ikke kører en SSH-server. Uden SSH-serveren vil maskinen ikke acceptere indgående SSH-forbindelser, og du vil ikke kunne få fjernadgang til den.
Så det allerførste trin i fejlfinding af fejlen er at kontrollere, om en SSH-server er installeret på fjernmaskinen. Brug følgende kommando til at bekræfte SSH-serverinstallationen:
På Debian-baserede distributioner:
dpkg --liste | grep ssh
På RHEL-baserede distributioner:
yum liste installeret | grep ssh
På openSUSE:
zypper søgning -i | grep ssh
På Arch-baserede distributioner:
pacman -Q | grep ssh
Hvis SSH-serveren er installeret på den eksterne maskine, vil du se den opført i outputtet. Ellers skal du installer OpenSSH-serveren på den eksterne maskine du vil tilgå via SSH. OpenSSH er en open source-version af SSH-værktøjerne til fjernadgang og styring af systemer.
For at installere OpenSSH-serveren skal du bruge følgende kommandoer:
På Debian-baserede distributioner:
sudo apt installer openssh-server
På RHEL-baserede distributioner:
sudo yum installer openssh-server
På openSUSE:
sudo zypper installer openssh
På Arch-baserede distributioner:
pacman -S openssh
2. Tjek SSH-servicestatus
En anden grund til at få fejlen "forbindelse nægtet" kan være, at SSH-tjenesten er deaktiveret eller ikke kører på fjernmaskinen. Når du er sikker på, at SSH-serveren er installeret, er den anden ting, du skal tjekke, serverens status.
sudo systemctl status sshd
Hvis tjenesten er oppe at køre, vil outputtet angive det som aktiv (løbende). Ellers vil du se noget lignende inaktiv (død).
Hvis SSH-serveren ikke kører, kan du starte den manuelt ved at bruge følgende kommando:
sudo systemctl start sshd
Du kan også aktivere tjenesten til automatisk at starte ved opstart med:
sudo systemctl aktiver sshd
3. Tjek SSH-porten
Som standard kører SSH-serveren på port 22. Man kan dog ændre standardporten. Derfor, hvis du modtager SSH-fejlen "forbindelse nægtet", kan det skyldes, at du forsøger at oprette forbindelse til SSH-serveren på standardport 22, mens den kører på en anden port.
Du kan brug netstat-kommandoen med grep for at finde den port SSH-serveren lytter på:
sudo netstat -plntu | grep ssh
Du kan også finde SSH-porten fra sshd_config fil ved hjælp af følgende kommando:
grep port /etc/ssh/sshd_config
Efter at have identificeret den korrekte SSH-port, prøv at oprette forbindelse til dit fjernsystem ved hjælp af den specifikke port.
4. Tjek din systemfirewall
De fleste af forbindelsesproblemerne opstår på grund af maskinens firewall, der blokerer nogle porte eller tjenester. Hvis fjernmaskinen har SSH-serveren installeret og kørende, er næste trin at tjekke din firewall.
For at finde ud af, om firewallen blokerer forbindelsen, skal du midlertidigt deaktivere firewallen ved hjælp af følgende kommandoer:
På Debian- og Arch-baserede Linux-distributioner:
sudo ufw deaktiver
På RHEL-baserede distributioner og openSUSE:
sudo systemctl deaktiver firewalld
Hvis fejlen ikke vises efter deaktivering af firewallen, betyder det, at firewallen blokerede forbindelsen. I dette tilfælde skal du genaktivere firewallen og tilføje en regel, der tillader SSH.
På Debian- og Arch-baserede Linux-distributioner skal du bruge følgende kommando til at tillade SSH ind UFW firewall:
sudo ufw tillade ssh
Alternativt kan du også tillade SSH efter portnummeret i firewallen. Lad os sige, at SSH-serveren bruger port 5555, så vil du bruge følgende kommando til at tillade det i firewallen:
sudo ufw tillade 5555
For at kontrollere, om reglen er blevet tilføjet korrekt, skal du kontrollere UFW-status:
sudo ufw status
På RHEL-baserede distributioner og openSUSE skal du bruge følgende kommando til at tillade SSH i firewallen:
sudo firewall-cmd --permanent --add-service=ssh
For at tillade SSH efter portnummer skal du bruge følgende kommando:
sudo firewall-cmd --permanent --add-port={port}/tcp
For en SSH-server, der kører på port 4444, ville kommandoen være:
sudo firewall-cmd --permanent --add-port=4444/tcp
For at bekræfte, at reglen er blevet tilføjet i firewallen, skal du køre:
sudo firewall-cmd --list-all
5. Løs IP-adressekonflikter
Der er også en chance for, at SSH-fejlen "forbindelse nægtet" opstår på grund af, at SSH-serverens IP er i konflikt med et andet systems IP i netværket. Dette sker, når to systemer på et netværk hævder at have samme IP-adresse, hvilket resulterer i en IP-konflikt.
For at bekræfte, om der er en IP-konflikt i dit netværk, skal du bruge arp-scan-værktøjet som følger:
arp-scan [netværks-id]
Hvis der er en IP-konflikt, vil du se den duplikerede IP-adresse i outputtet. Nedenstående skærmbillede er et eksempel på en IP-konflikt i et netværk:
For at undgå IP-konflikter skal du sørge for, at ingen enheder har statiske IP-adresser, der overlapper med DHCP-puljeadresserne.
Bonustip: Kør SSH i Verbose Mode
Når du støder på en SSH-fejl, kan du prøve at køre ssh-kommandoen i verbose tilstand for at spore problemet. For at køre SSH i verbose tilstand, brug kommandoen ssh med -vvv mulighed som følger:
ssh -vvv brugernavn@ip_adresse
I udførlig tilstand vil du se fejlfindingsmeddelelser i hvert trin af forbindelsen, som vil hjælpe dig med at forstå, hvor problemet ligger.
Fejlfinding af SSH-fejlen "Connection Refused" på Linux
Ved at identificere de potentielle årsager til SSH-forbindelsesfejlen og implementere de foreslåede løsninger, vil du være i stand til at fejlfinde og løse SSH-fejlen "forbindelse nægtet". Ud over disse trin skal du sørge for at oprette forbindelse til den korrekte IP-adresse og bruge de rigtige loginoplysninger.
For at gøre din fjernforbindelse mere sikker, kan du konfigurere to-faktor-godkendelse til SSH på Linux.