Hvorfor tar SSH-innloggingen lang tid?

Opplever du at SSH-tilkoblingen stopper opp i flere sekunder etter at passordet eller SSH-nøkkelen er godkjent? Forsinkelsen kan skyldes oppgaver som kjøres når brukersesjonen opprettes, for eksempel PAM-moduler eller skript som lager innloggingsmeldingen på serveren.

Denne guiden viser hvordan du kan finne årsaken uten å deaktivere viktige sikkerhets- eller systemfunksjoner.


I denne guiden:

 

Merk: Du trenger en bruker med sudo-tilgang. Behold den eksisterende SSH-økten åpen mens du gjør endringer, slik at du fortsatt har tilgang dersom noe går galt.


1. Finn ut hvor forsinkelsen oppstår

Koble til serveren med detaljert feilsøkingsinformasjon:

ssh -vvv bruker@server

Bytt ut bruker og server med SSH-brukeren og serverens IP-adresse eller vertsnavn.

Se spesielt etter hvor utskriften stopper opp. Dersom forsinkelsen kommer etter en melding som denne:

Authentication succeeded

er autentiseringen fullført. Problemet ligger da sannsynligvis i opprettelsen av brukersesjonen eller i kommandoer som kjøres ved innlogging.

Du kan også måle hele innloggingstiden:

time ssh bruker@server exit

2. Kontroller systemloggen

På Ubuntu kan du kontrollere SSH- og systemloggen med:

sudo journalctl -u ssh --since "10 minutes ago"

Du kan også se etter feil fra PAM eller systemd-logind:

sudo journalctl --since "10 minutes ago" | grep -Ei "pam|sshd|logind"

Forsøk en ny innlogging mens du følger loggen:

sudo journalctl -f

Avslutt visningen med Ctrl+C.


3. Test om innloggingsmeldingen skaper forsinkelsen

Ubuntu kan lage en dynamisk innloggingsmelding, ofte kalt MOTD. Meldingen bygges av kjørbare skript i denne mappen:

/etc/update-motd.d/

Disse skriptene kan blant annet hente systeminformasjon, kontrollere tilgjengelige oppdateringer eller kontakte andre tjenester. Dersom et skript bruker lang tid, kan også SSH-innloggingen bli forsinket.

Opprett først filen .hushlogin for brukeren som opplever problemet:

touch ~/.hushlogin

Logg deretter ut og inn igjen.

Hvis innloggingen nå går raskere, er innloggingsmeldingen eller et MOTD-skript sannsynligvis årsaken.

Filen kan fjernes igjen med:

rm ~/.hushlogin

4. Finn et tregt MOTD-skript

Se hvilke MOTD-skript som er aktive:

ls -l /etc/update-motd.d/

Kjør de aktive skriptene og mål tiden:

sudo run-parts --test /etc/update-motd.d/
sudo time run-parts /etc/update-motd.d/

Du kan også teste ett skript om gangen:

sudo time /etc/update-motd.d/skriptnavn

Bytt ut skriptnavn med navnet på skriptet du vil teste.

Hvis ett bestemt skript er tregt, bør du undersøke hvorfor før du deaktiverer det. Det kan for eksempel vente på nettverk, DNS-oppslag eller en tjeneste som ikke svarer.

Et unødvendig MOTD-skript kan deaktiveres ved å fjerne kjørerettigheten:

sudo chmod -x /etc/update-motd.d/skriptnavn

Du kan aktivere det igjen med:

sudo chmod +x /etc/update-motd.d/skriptnavn

5. Kontroller PAM-konfigurasjonen

PAM håndterer blant annet autentisering, tilgangskontroll og opprettelse av brukersesjoner. SSH-konfigurasjonen for PAM ligger vanligvis her:

/etc/pam.d/sshd

Se innholdet med:

sudo less /etc/pam.d/sshd

Se etter egendefinerte eller eksterne moduler som kan bruke lang tid. Dette kan for eksempel være moduler som kontakter en katalogtjeneste eller annen ekstern autentiseringstjeneste.

Du bør ikke deaktivere pam_systemd.so eller sette UsePAM no som et generelt feilsøkingstiltak. Slike endringer kan påvirke både sikkerheten og hvordan brukersesjoner fungerer.


6. Kontroller DNS og vertsnavn

Feil i serverens vertsnavn eller DNS-oppsett kan også føre til ventetid i enkelte innloggingsprosesser.

Kontroller vertsnavnet:

hostnamectl

Kontroller at serverens vertsnavn kan slås opp:

getent hosts "$(hostname)"
getent hosts "$(hostname -f)"

Se også innholdet i:

cat /etc/hosts
cat /etc/resolv.conf

Serverens vertsnavn bør være riktig definert og kunne slås opp uten lang ventetid.


7. Last inn SSH-konfigurasjonen på en trygg måte

Dersom du har endret /etc/ssh/sshd_config eller en fil under /etc/ssh/sshd_config.d/, må du først kontrollere at konfigurasjonen er gyldig:

sudo sshd -t

Ingen utskrift betyr normalt at syntaksen er godkjent.

Last deretter konfigurasjonen inn på nytt:

sudo systemctl reload ssh

Test en ny SSH-tilkobling i et eget terminalvindu før du avslutter den eksisterende økten.

Problemet vedvarer

Hvis problemet fortsatt ikke er løst, bør du samle følgende informasjon:

  • hvilken Ubuntu- eller Linux-versjon serveren bruker
  • hvor lenge innloggingen stopper opp
  • hvor ssh -vvv stopper
  • relevante linjer fra journalctl
  • om problemet gjelder alle brukere eller bare én bruker
  • om innlogging med SSH-nøkkel og passord oppfører seg forskjellig

Unngå å deaktivere PAM eller sentrale systemd-moduler som en generell løsning. Slike endringer kan føre til problemer med innlogging, tilgangskontroll og aktive brukersesjoner.

Var denne artikkelen nyttig?

Fant du ikke det du trengte?

Chat med oss

Trenger du hjelp? Chat med oss direkte hverdager mellom kl. 8:30-16:30

Snakk med oss

Du kan ringe oss direkte på hverdager mellom kl. 09:00-15:00