Så här felsöker du SSH -anslutningar

How Debug Ssh Connections



Denna handledning kommer att gå igenom några snabba metoder och tekniker som du kan använda för att diagnostisera olika SSH -anslutningar, inklusive när du inte kan ansluta till SSH, autentiseringsfel och sådant.

NOTERA: Innan du sätter igång, se till att enheten du vill ansluta till är online och att felet inte är ett resultat av att enheten inte är tillgänglig.







Problem 1: SSH -tjänsten körs inte

En vanlig orsak till SSH -anslutningsfel är att tjänsten inte körs på fjärrvärden. Detta kan bero på att tjänsten stängs av av misstag eller att tjänsten inte startar efter en systemstart.



För att kontrollera om SSH -tjänsten körs, använd systemhanteraren med kommandot:



sudosystemctl status sshd

Kommandot ovan bör rapportera om tjänsten körs eller inte, som visas i skärmdumparna nedan.







Lösning

För att lösa SSH -problem som orsakas av att tjänsten inte körs, använd systemet för att starta tjänsten. Om tjänsten svarar med fel, kontrollera loggarna och åtgärda problemen som rapporteras i loggen.

Använd kommandot nedan för att kontrollera serviceloggarna.

grepp 'sshd' /var/logga/auth.log

Använd kommandot nedan för att starta eller stoppa SSH -tjänsten med systemd.

sudosystemctl start sshd

Problem 2: SSH på icke-standardport

Det andra vanliga problemet vid felsökning av SSH-anslutningar är användningen av en icke-standardport. Om SSH körs på en annan port än standardporten 22 kommer du inte att ansluta till fjärrvärden om du inte uttryckligen anger porten som SSH körs på.

För att se porten som SSH körs på, använd ett verktyg som netstat enligt nedan:

[hundratals@centos8 ~]$sudo netstat -ptln | grepp ssh
tcp0 00.0.0.0:560.0.0.0:*LYSSNA1131/sshd
tcp60 0:::56:::*LYSSNA1131/sshd

Ovanstående utmatning visar vilken port SSH -tjänsten körs på. I det här fallet är det port 56.

Lösning

För att lösa detta problem kan du använda informationen från netstat för att uttryckligen ange porten i ditt ssh -kommando som:

sshAnvändarnamn@ip -s 56

Problem 3: En annan tjänst som använder samma port

En annan orsak till SSH -anslutningsfel är om en annan tjänst eller process också använder samma port som SSH -tjänsten. Till exempel, om SSH uttryckligen anges för att köras på port 80 (hemsk idé), kan en tjänst som Apache använda samma port.

För att se om en annan process använder samma port som SSH, kontrollera loggarna med kommandot:

sudojournalctl-tsshd

Det här kommandot ska returnera ett fel som det som visas nedan, vilket indikerar om en annan process använder den SSH-bundna porten.

sshd[110611]: fel: Bind till port80den 0.0.0.0 misslyckades: Adressen redanianvända sig av

Det är bra att se till att portbindningsfelet orsakas av en annan tjänst, inte säkerhetsåtgärder som SELinux.

Lösning

Det finns olika sätt att lösa problemet. Dessa inkluderar:

Den första är att binda SSH -tjänsten till en annan port. Du kan göra detta genom att redigera SSH -konfigurationsfilen. Till exempel, ändra portpost till port 3009 som visas i kommandona:

sudo nano /etc/ssh/sshd_config
Hamn3009

En annan metod du kan använda för att lösa problemet är att stoppa tjänsten med SSH -porten. Till exempel, stoppa apache -tjänsten med port 80 som:

sudosystemctl stoppa httpd
sudosystemctl inaktivera httpd

Utgåva 4: Brandvägg

Om du har provat alla ovanstående metoder och fortfarande inte har någon SSH -anslutning kan du gå vidare till nästa möjliga orsak till problemet: Brandväggsbegränsningar. Beroende på vilken brandväggsmetod du använder (UFW eller Iptables) måste du se till att brandväggen tillåter SSH -anslutningar.

Lösning

Brandväggsreglerna är breda och kan variera beroende på systemkonfiguration. Således kan jag inte täcka alla aspekter. Följande är dock en enkel lösning för att säkerställa att SSH -tjänsten är tillåten på UFW -brandväggen.

sudoufw tillåt<ssh_port> /tcp

Du kan också återställa alla UFW -regler och börja om. Det gör att du kan felsöka brandväggsanslutningarna från grunden.

sudoufw återställ

Problem 5: Inaktiverade lösenordsinloggningar

Ibland kan du konfigurera SSH för att inte acceptera lösenordsinloggningar och bara använda autentisk autentisering. Det kan orsaka ett problem om den offentliga nyckeln inte är tillgänglig på servern eller saknar ditt privata nyckelpar.

För att kontrollera om lösenordsinloggningar är tillåtna, ange ssh -konfigurationen som:

[hundratals@centos8]$sudo greppPasswordAuthentication/etc/ssh/sshd_config
#PasswordAuthentication ja
PasswordAuthenticationja
# PasswordAuthentication. Beroende på din PAM -konfiguration,
# PAM -autentisering, aktivera sedan detta men ställ in PasswordAuthentication

Ovanstående utdata visar att lösenordslogin är tillåten.

Lösning

För att lösa problemet ovan kan du använda två metoder:

Först, om du har värdet som nej, ändra PasswordAuthentication -värdet till ja och starta om ssh -tjänsten.

Den andra metoden är att skapa ett ssh nyckel-värde-par och använda det för att logga in på servern. Om du vill lära dig hur du skapar ssh-nyckel-värdepar använder du följande guide.

https://linuxhint.com/find-ssh-public-key/

https://linuxhint.com/use-ssh-copy-id-command/

Slutsats

I den här snabbguiden diskuterade vi de viktigaste orsakerna till SSH -anslutningsfel och hur du kan lösa dem. Även om den här guiden täcker vanliga problem kan du hitta fel specifika för ditt system baserat på konfiguration och behörigheter.