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:
- 1. Finn ut hvor forsinkelsen oppstår
- 2. Kontroller systemloggen
- 3. Test om innloggingsmeldingen skaper forsinkelsen
- 4. Finn et tregt MOTD-skript
- 5. Kontroller PAM-konfigurasjonen
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 succeededer 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 exit2. 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 -fAvslutt 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 ~/.hushloginLogg 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 ~/.hushlogin4. 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/skriptnavnBytt 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/skriptnavnDu kan aktivere det igjen med:
sudo chmod +x /etc/update-motd.d/skriptnavn5. Kontroller PAM-konfigurasjonen
PAM håndterer blant annet autentisering, tilgangskontroll og opprettelse av brukersesjoner. SSH-konfigurasjonen for PAM ligger vanligvis her:
/etc/pam.d/sshdSe innholdet med:
sudo less /etc/pam.d/sshdSe 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:
hostnamectlKontroller at serverens vertsnavn kan slås opp:
getent hosts "$(hostname)"
getent hosts "$(hostname -f)"Se også innholdet i:
cat /etc/hosts
cat /etc/resolv.confServerens 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 -tIngen utskrift betyr normalt at syntaksen er godkjent.
Last deretter konfigurasjonen inn på nytt:
sudo systemctl reload sshTest 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 -vvvstopper - 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.