Modul 1 · 1.3
Den første SSH-innloggingen
Modul 1: Din første server · Lesetid: 10 minutter
Læringsmål: Etter denne leksjonen kan du logge inn på serveren din med SSH for første gang, kontrollere fingeravtrykket til serveren før du stoler på den, og du vet hva du gjør når du får advarselen om at serverens identitet har endret seg.
Nøkkelbegreper: SSH, klient og server, port 22, versjonsbanner, host key, fingeravtrykk (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell og Terminal
Hva SSH er
SSH (Secure Shell) er den krypterte forbindelsen du bruker til å administrere en server på avstand. Du skriver på din egen datamaskin, og kommandoene kjøres på serveren. Alt som går over linjen, også passordet ditt, er kryptert.
Det er to sider:
- SSH-klienten på din egen datamaskin: programmet
ssh. På macOS og Linux følger det med som standard. På Windows 10 (fra versjon 1809) og Windows 11 er OpenSSH-klienten en del av Windows; du bruker den i PowerShell eller Windows Terminal. Mangler den, legger du den til via Innstillinger, Valgfrie funksjoner, "OpenSSH-klient". Programmer med vinduer, som PuTTY, fungerer også, men i dette kurset bruker vissh. - SSH-serveren på VPS-en: programmet
sshd(fra OpenSSH). Det lytter som standard på port 22.
Logge inn
Du logger inn med et brukernavn og adressen til serveren:
PS C:\Users\anna> ssh root@192.0.2.10Eller med et navn, hvis du har lagt det inn i DNS (leksjon 7.1):
anna@laptop:~$ ssh root@web1.example.comFørste gang ser du noe som dette:
The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?Dette er det viktigste øyeblikket i denne leksjonen. Ikke skriv yes i blinde.
Host key og fingeravtrykket
Hver SSH-server har én eller flere host keys: nøkkelpar som serveren bruker til å bevise hvem den er. De offentlige delene ligger på serveren i /etc/ssh/, for eksempel /etc/ssh/ssh_host_ed25519_key.pub. Ved hver tilkobling viser serveren at den har den hemmelige delen.
Et fingeravtrykk er et kort sammendrag (en hash) av en slik offentlig nøkkel. OpenSSH viser som standard SHA256-formen: SHA256: etterfulgt av 43 tegn.
Spørsmålet "Are you sure you want to continue connecting?" betyr: datamaskinen din kjenner ikke denne serveren ennå. Hvem garanterer at du snakker med din VPS og ikke med noen som fanger opp trafikken? Ingen, med mindre du sammenligner fingeravtrykket med en pålitelig kilde.
Den kilden er konsollen hos leverandøren din (leksjon 1.2). Der snakker du ikke med serveren over nettverket. Logg inn i konsollen og hent fingeravtrykket:
root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)Stemmer dette nøyaktig med det klienten viser, skriver du yes. Du kan også lime inn selve fingeravtrykket i stedet for yes; da sammenligner ssh det for deg. Avviker det, stopper du og finner ut hvorfor (feil IP-adresse, serveren er installert på nytt, eller noe mer alvorlig).
Se på typen: klienten oppgir typen (ED25519, ECDSA eller RSA). Sammenlign fingeravtrykket av samme type. Mange images skriver også fingeravtrykkene til konsollen ved første oppstart (cloud-init), mellom linjer som BEGIN SSH HOST KEY FINGERPRINTS.
known_hosts og trust on first use
Skriver du yes, ser du:
Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.Klienten lagrer nøkkelen i ~/.ssh/known_hosts (på Windows C:\Users\<naam>\.ssh\known_hosts). Fra nå av sammenligner den automatisk ved hver tilkobling. Denne modellen heter trust on first use (TOFU): første gang må du kontrollere selv, deretter passer klienten på.
Derfor er den første kontrollen så viktig: stoler du på en feil nøkkel, advarer klienten deg aldri mer etterpå.
Jobber du selv på en datamaskin med Debian eller Ubuntu, er navnene i known_hosts hashet som standard (HashKnownHosts yes i /etc/ssh/ssh_config), så du ser ingen lesbare IP-adresser der. På Windows og macOS står de lesbart. Søk fungerer overalt med:
anna@laptop:~$ ssh-keygen -F 192.0.2.10
# Host 192.0.2.10 found: line 3
|1|kP9...= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA..."REMOTE HOST IDENTIFICATION HAS CHANGED"
Noen ganger ser du denne advarselen:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.Serveren viser en annen nøkkel enn den klienten din kjenner. ssh nekter da å koble til. Det finnes to typer årsaker:
| Normalt | Mistenkelig |
|---|---|
| Du har installert VPS-en på nytt (nye host keys) | Du har ikke endret noe, og likevel er nøkkelen annerledes |
| IP-adressen er gitt til en annen server | Du sitter på et ukjent wifi-nettverk |
| Du har bevisst byttet ut host keys | Fingeravtrykket i konsollen avviker fra det klienten ser nå |
Finnes det en normal forklaring, kontrollerer du fingeravtrykket i konsollen på nytt, og først deretter fjerner du den gamle linjen:
anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.Ved neste tilkobling får du igjen spørsmålet fra første gang, og du kontrollerer på nytt. Sett aldri StrictHostKeyChecking no i innstillingene dine for å bli kvitt advarselen: da slår du av nettopp den beskyttelsen det handler om.
Versjonsbanneret
Før noe krypteres, sender klient og server hverandre en tekstlinje: versjonsbanneret. Det er synlig for alle på internett. Du ser det med ssh -v:
anna@laptop:~$ ssh -v root@192.0.2.10 2>&1 | grep "remote software"
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.6p1 Ubuntu-3ubuntu13.5Her forteller serveren hvilken protokoll (2.0) og hvilken programvare den bruker. Debian og Ubuntu legger til pakkeversjonen. Det er ingen hemmelighet du må skjule: angripere prøver uansett alt, og du beskytter deg med oppdateringer (modul 4), ikke med et annet banner. Praktisk er det likevel: på banneret ser du utenfra om serveren din faktisk kjører den oppdaterte versjonen.
På AlmaLinux og Rocky Linux
Innlogging og fingeravtrykk fungerer på samme måte. Tjenesten heter sshd i stedet for ssh (systemctl status sshd). Banneret inneholder ikke noe distribusjonsnavn, bare OpenSSH-versjonen.
Sammendrag
- SSH er den krypterte forbindelsen til serveren din;
ssher klienten,sshder serveren på port 22. - Ved første tilkobling viser klienten fingeravtrykket til host key. Sammenlign det med utdataene fra
ssh-keygen -lfi konsollen før du skriveryes. - Klienten lagrer nøkkelen i
~/.ssh/known_hostsog advarer deg selv heretter (trust on first use). - "REMOTE HOST IDENTIFICATION HAS CHANGED" er normalt etter en ny installasjon; ellers er det mistenkelig. Fjern en gammel linje bare etter kontroll, med
ssh-keygen -R. - Versjonsbanneret er offentlig; beskyttelse kommer fra oppdateringer, ikke fra å skjule.
Quiz
Oppgave
Oppgave Z1.3: SSH-banner og fingeravtrykk for serveren din. Fyll inn adressen til serveren din, programvareversjonen fra banneret (for eksempel OpenSSH_9.6p1) og ED25519-fingeravtrykket du hentet i konsollen med ssh-keygen -lf. Programmet kobler til SSH-porten din én gang, leser banneret og host key, og sammenligner. Det logger ikke inn.
Les mer
- Logg inn på VPS-en din med SSH (og lag en SSH-nøkkel)
- Har du ikke lenger tilgang til VPS-en din? Dette gjør du nå
- ssh-keygen(1), valgene -l, -F og -R: https://manpages.debian.org/trixie/openssh-client/ssh-keygen.1.en.html
- ssh_config(5), StrictHostKeyChecking, FingerprintHash og HashKnownHosts: https://manpages.debian.org/trixie/openssh-client/ssh_config.5.en.html
- RFC 4253, avsnitt 4.2 (versjonsbanneret): https://www.rfc-editor.org/rfc/rfc4253.html
