BEMÆRK: Inden du går i gang, skal du sikre dig, at den enhed, du ønsker at oprette forbindelse til, er online, og fejlen ikke er et resultat af, at enheden ikke er tilgængelig.
Problem 1: SSH -service kører ikke
En almindelig årsag til SSH -forbindelsesfejl er, at tjenesten ikke kører på den eksterne vært. Dette kan skyldes utilsigtet nedlukning af tjenesten, eller tjenesten starter ikke efter en systemstart.
For at kontrollere, om SSH -tjenesten kører, skal du bruge systemadministratoren ved hjælp af kommandoen:
sudosystemctl status sshd
Ovenstående kommando skal rapportere, om tjenesten kører eller ej, som vist på skærmbillederne nedenfor.
Løsning
For at løse SSH -problemer forårsaget af, at tjenesten ikke kører, skal du bruge systemet til at starte tjenesten. Hvis tjenesten reagerer med fejl, skal du kontrollere logfilerne og løse de problemer, der er rapporteret i loggen.
Brug kommandoen herunder til at kontrollere servicelogfiler.
greb 'sshd' /hvor/log/auth.logBrug kommandoen herunder til at starte eller stoppe SSH -tjenesten ved hjælp af systemd.
sudosystemctl start sshdUdgave 2: SSH på ikke-standardport
Det andet almindelige problem ved fejlfinding af SSH-forbindelser er brugen af en ikke-standardport. Hvis SSH kører på en anden port end standardport 22, opretter du ikke forbindelse til den eksterne vært, medmindre du eksplicit angiver den port, som SSH kører på.
For at se den port, som SSH kører på, skal du bruge et værktøj som netstat som nedenfor:
[hundredvis@centos8 ~]$sudo netstat -ptln | greb sshtcp0 00.0.0.0:560.0.0.0:*LYT1131/sshd
tcp60 0:::56:::*LYT1131/sshd
Ovenstående output viser, hvilken port SSH -tjenesten kører på. I dette tilfælde er det port 56.
Løsning
For at løse dette problem kan du bruge oplysningerne fra netstat til eksplicit at angive porten i din ssh -kommando som:
sshbrugernavn@ip -s 56Problem 3: En anden service, der bruger den samme port
En anden årsag til SSH -forbindelsesfejl er, hvis en anden tjeneste eller proces også bruger den samme port som SSH -tjenesten. For eksempel, hvis SSH eksplicit er angivet til at køre på port 80 (frygtelig idé), kan en tjeneste som Apache muligvis bruge den samme port.
Hvis du vil se, om en anden proces bruger den samme port som SSH, skal du kontrollere logfilerne med kommandoen:
sudojournalctl-tsshdDenne kommando skal returnere en fejl som den, der er vist nedenfor, og angiver, om en anden proces bruger den SSH-bundne port.
sshd[110611]: fejl: Bind til port80den 0.0.0.0 mislykkedes: Adresse alleredeibrugDet er godt at sikre, at portbindingsfejlen skyldes en anden tjeneste, ikke sikkerhedsforanstaltninger såsom SELinux.
Løsning
Der er forskellige måder, du kan bruge til at løse dette problem. Disse omfatter:
Den første er at binde SSH -tjenesten til en anden port. Du kan gøre dette ved at redigere SSH -konfigurationsfilen. Skift f.eks. Portindgang til port 3009 som vist i kommandoerne:
sudo nano /etc/ssh/sshd_configHavn3009
En anden metode, du kan bruge til at løse dette problem, er at stoppe tjenesten ved hjælp af SSH -porten. Stop f.eks. Apache -tjenesten ved hjælp af port 80 som:
sudosystemctl stop httpdsudosystemctl deaktiver httpd
Problem 4: Firewall
Hvis du har prøvet alle ovenstående metoder og stadig ikke har nogen SSH -forbindelse, kan du gå videre til den næste mulige årsag til problemet: Firewall -begrænsninger. Afhængigt af den firewall -metode, du bruger (UFW eller Iptables), skal du sikre dig, at firewallen tillader SSH -forbindelser.
Løsning
Firewall -reglerne er brede og kan variere afhængigt af systemkonfigurationen. Således kan jeg ikke dække alle aspekter. Følgende er imidlertid en simpel løsning for at sikre, at SSH -tjenesten er tilladt på UFW Firewall.
sudoufw tillade<ssh_port> /tcpDu kan også nulstille alle UFW -reglerne og starte forfra. Det giver dig mulighed for at foretage fejlfinding af firewallforbindelserne fra bunden.
sudoufw nulstillesProblem 5: Deaktiveret adgangskode -login
Nogle gange kan du konfigurere SSH til ikke at acceptere adgangskode-login og kun bruge offentlig nøgle-godkendelse. Det kan forårsage et problem, hvis den offentlige nøgle ikke er tilgængelig på serveren eller mangler dit private nøglepar.
For at kontrollere, om adgangskode -logins er tilladt, skal du konfigurere ssh -konfigurationen som:
[hundredvis@centos8]$sudo grebPasswordAuthentication/etc/ssh/sshd_config#PasswordAuthentication ja
PasswordAuthenticationJa
# PasswordAuthentication. Afhængigt af din PAM -konfiguration,
# PAM -godkendelse, aktiver derefter denne, men indstil PasswordAuthentication
Ovenstående output viser, at adgangskode -login er tilladt.
Løsning
For at løse ovenstående problem kan du bruge to metoder:
Først, hvis du har værdien indstillet til nej, skal du ændre værdien PasswordAuthentication til ja og genstarte ssh -tjenesten.
Den anden metode er at oprette et ssh-nøgleværdipar og bruge det til at logge ind på serveren. Hvis du vil lære at oprette ssh-nøgleværdipar, skal du bruge følgende vejledning.
https://linuxhint.com/find-ssh-public-key/
https://linuxhint.com/use-ssh-copy-id-command/
Konklusion
I denne hurtige vejledning diskuterede vi de vigtigste årsager til SSH -forbindelsesfejl, og hvordan du kan løse dem. Selvom denne vejledning dækker almindelige problemer, kan du finde fejl, der er specifikke for dit system baseret på konfiguration og tilladelser.