Sådan fejler du SSH -forbindelser

How Debug Ssh Connections



Denne vejledning vil gå over nogle hurtige metoder og teknikker, du kan bruge til at diagnosticere forskellige SSH -forbindelser, herunder når du ikke kan oprette forbindelse til SSH, godkendelsesfejl og sådan.

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.log

Brug kommandoen herunder til at starte eller stoppe SSH -tjenesten ved hjælp af systemd.

sudosystemctl start sshd

Udgave 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 ssh
tcp0 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 56

Problem 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-tsshd

Denne 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 alleredeibrug

Det 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_config
Havn3009

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 httpd
sudosystemctl 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> /tcp

Du kan også nulstille alle UFW -reglerne og starte forfra. Det giver dig mulighed for at foretage fejlfinding af firewallforbindelserne fra bunden.

sudoufw nulstilles

Problem 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.