Modul 2 · 2.1
Lag og bruk SSH-nøkler
Modul 2: SSH og nøkler · Lesetid: 10 minutter
Læringsmål: Etter denne leksjonen kan du lage et nøkkelpar, legge den offentlige nøkkelen på serveren din, logge inn uten passord og oppbevare den private nøkkelen din slik at en mistet bærbar PC ikke blir en katastrofe.
Nøkkelbegreper: nøkkelpar, offentlig nøkkel, privat nøkkel, ed25519, RSA, passfrase, ssh-agent, ssh-copy-id, authorized_keys, rettighetene 700 og 600, én nøkkel per enhet, FIDO2-nøkkel
Hvorfor nøkler er bedre enn passord
I leksjon 1.3 logget du inn med et passord. Det fungerer, men en server på internett får besøk fra første minutt av programmer som gjetter passord. Ta en titt i loggen på en helt ny server:
root@web1:~# journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
214Hundrevis av forsøk i timen er normalt. Et sterkt passord stopper dem, men du har laget et svakt punkt du ikke trenger. Med en SSH-nøkkel er gjetting meningsløst: det finnes ingenting å gjette som står i en ordliste.
En nøkkel består av to deler som hører sammen, et nøkkelpar:
- Den private nøkkelen blir på din egen datamaskin. Den som har denne filen (og kjenner passfrasen), kan logge inn. Ikke del den med noen, heller ikke med leverandøren din eller en brukerstøtte.
- Den offentlige nøkkelen gir du til serveren. Den kan alle se: du kan ikke logge inn med den, bare kontrollere.
Ved innlogging sendes ikke noe passord over linjen. Datamaskinen din beviser med en signatur at den har den private nøkkelen, og serveren kontrollerer signaturen med den offentlige nøkkelen. Selv om noen lytter på nettverket, ser de ingenting de kan bruke på nytt senere.
Lag en nøkkel
Du lager nøkkelen på din egen datamaskin, ikke på serveren. På Windows 10 og 11, macOS og Linux er ssh-keygen allerede med. Åpne PowerShell eller Terminal:
anna@laptop:~$ ssh-keygen -t ed25519 -C "anna@laptop 2026"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/anna/.ssh/id_ed25519):
Enter passphrase for "/home/anna/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/anna/.ssh/id_ed25519
Your public key has been saved in /home/anna/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026Hva skjer her?
-t ed25519velger typen. Ed25519 er kort, raskt og sikkert, og siden OpenSSH 9.5 også standardtypen hvis du ikke oppgir noe. Må du betjene et gammelt system som ikke kjenner ed25519, bruker du RSA med minst 3072 bit:ssh-keygen -t rsa -b 4096. Eldre typer som DSA er fjernet fra OpenSSH; ikke bruk dem.-Cer bare en kommentar. Skriv noe som gjør at du senere ser hvilken enhet nøkkelen tilhører. Det hjelper enormt når du må trekke tilbake en nøkkel.- Passfrasen krypterer den private nøkkelen på disken. Blir den bærbare PC-en din stjålet, har tyven en kryptert fil. Uten passfrase har tyven direkte tilgang til alle serverne dine.
Du har nå to filer:
| Fil | Hva | Dele? |
|---|---|---|
~/.ssh/id_ed25519 | Privat nøkkel | Aldri |
~/.ssh/id_ed25519.pub | Offentlig nøkkel, én tekstlinje | Ja, til serveren |
På Windows ligger de i C:\Users\anna\.ssh\. Den offentlige nøkkelen er én linje som begynner med ssh-ed25519:
anna@laptop:~$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk2... anna@laptop 2026Legg den offentlige nøkkelen på serveren
Serveren ser etter offentlige nøkler i filen ~/.ssh/authorized_keys til brukeren du logger inn med. Hver linje er én nøkkel. Det finnes tre måter å få nøkkelen din dit på:
1. Ved installasjonen. De fleste leverandører har et felt for den offentlige nøkkelen når du oppretter eller installerer en VPS på nytt. Hos WebOké heter feltet "SSH-nøkkel" i VPS-skjermbildet; hos andre leverandører fungerer det på lignende måte. Dette er den beste måten: da trenger passordinnlogging aldri å være slått på.
2. Med ssh-copy-id (macOS og Linux), mens passordinnlogging fortsatt fungerer:
anna@laptop:~$ ssh-copy-id anna@192.0.2.10
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed
anna@192.0.2.10's password:
Number of key(s) added: 13. For hånd, for eksempel fra Windows eller via konsollen hos leverandøren din. Lim inn linjen fra .pub-filen din i authorized_keys og sett riktige rettigheter:
anna@web1:~$ mkdir -p ~/.ssh
anna@web1:~$ nano ~/.ssh/authorized_keys
anna@web1:~$ chmod 700 ~/.ssh
anna@web1:~$ chmod 600 ~/.ssh/authorized_keysDisse rettighetene er ingen detalj. SSH-serveren kontrollerer dem (innstillingen StrictModes er slått på som standard): hvis andre kan skrive i .ssh-mappen din eller hjemmemappen din, ignorerer den nøklene dine. Du får da bare et passordspørsmål igjen, uten noen tydelig feilmelding. Hvordan du leser rettigheter, lærer du i leksjon 3.1.
Test deretter i et nytt vindu:
anna@laptop:~$ ssh anna@192.0.2.10
Enter passphrase for key '/home/anna/.ssh/id_ed25519':
anna@web1:~$Spørsmålet kommer nå fra din egen datamaskin (passfrasen til nøkkelen), ikke lenger fra serveren.
ssh-agent: lås opp én gang
Å skrive inn passfrasen hver gang er tungvint. ssh-agent holder den opplåste nøkkelen i minnet så lenge du er logget inn på datamaskinen din:
anna@laptop:~$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/anna/.ssh/id_ed25519:
Identity added: /home/anna/.ssh/id_ed25519 (anna@laptop 2026)
anna@laptop:~$ ssh-add -l
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)På macOS kobler agenten seg til nøkkelringen, på Windows er det tjenesten "OpenSSH Authentication Agent" (slå den på én gang under Tjenester). Slik får du det enkle ved å slippe passord, og likevel en kryptert nøkkel på disken.
Vær forsiktig med agent forwarding (ssh -A): da kan serveren du logger inn på bruke agenten din. Den som er root på den serveren, kan da gå videre med nøkkelen din. Bruk det bare på servere du stoler fullt på, eller bruk ProxyJump (leksjon 2.3).
Én nøkkel per enhet, og vit hvilke som ligger hvor
En vanlig feil: å kopiere én privat nøkkel til bærbar PC, stasjonær PC og telefon. Mister du én enhet, må du bytte nøkkelen overalt og sette opp alle enhetene på nytt. Bedre:
- lag en egen nøkkel på hver enhet, med en tydelig kommentar (
-C "anna@telefoon"); - legg alle offentlige nøkler i
authorized_keys, én per linje; - mister du en enhet, fjerner du bare den ene linjen.
Sjekk jevnlig hvilke nøkler som har tilgang:
anna@web1:~$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)
256 SHA256:Zt5oP1yW8eQ3rK6sV0bN9mD2xA4cH7jL1uI5fG8tE3w anna@telefoon (ED25519)Står det en nøkkel der som du ikke kjenner igjen, er det et varselsignal (leksjon 10.3). Inntrengere legger gjerne inn sin egen nøkkel i authorized_keys for å komme tilbake senere.
En maskinvarenøkkel (FIDO2, for eksempel en YubiKey) går også an. Med ssh-keygen -t ed25519-sk ligger den hemmelige delen på selve nøkkelen, og du må berøre den hver gang den brukes. En stjålet fil er da verdiløs. Det er et fint steg videre, men ikke nødvendig for å komme i gang.
Mistet den private nøkkelen?
Mister du din eneste private nøkkel og passordinnlogging er slått av, kommer du ikke lenger inn via SSH. Derfor:
- legg alltid minst to nøkler på serveren (for eksempel bærbar og stasjonær PC);
- vit hvordan konsollen hos leverandøren din fungerer (leksjon 1.2). Der logger du inn som om du har koblet et tastatur til serveren, og det fungerer også uten SSH. Hos WebOké heter det Konsoll i VPS-skjermbildet; andre leverandører kaller det VNC-konsoll, nettkonsoll eller nødkonsoll.
På AlmaLinux og Rocky Linux
Alt i denne leksjonen fungerer likt. Én ekstra felle: med SELinux slått på må ~/.ssh ha riktig sikkerhetsetikett. Har du laget eller kopiert mappen for hånd og nøkkelen din blir ignorert, retter restorecon -Rv ~/.ssh det opp.
Oppsummering
- Et nøkkelpar består av en privat nøkkel (blir hos deg) og en offentlig nøkkel (går til serveren, i
~/.ssh/authorized_keys). - Lag nøkler med
ssh-keygen -t ed25519på din egen datamaskin, med en passfrase; bruk ssh-agent for enkelhets skyld. - Rettigheter teller:
~/.sshpå 700 ogauthorized_keyspå 600, ellers ignorerer serveren nøkkelen din. - Én nøkkel per enhet, med en tydelig kommentar, slik at du kan trekke tilbake én av dem.
- Sørg for en ekstra nøkkel og kjenn konsollen hos leverandøren din som nødinngang.
Quiz
Oppgave
Oppgave O2.1: Lag og bruk en nøkkel. Lag en ed25519-nøkkel på din egen datamaskin med en passfrase og en tydelig kommentar, legg den på serveren din (via feltet hos leverandøren din, ssh-copy-id eller for hånd), kontroller rettighetene og logg inn med nøkkelen i et nytt vindu. Fyll deretter inn fingeravtrykket til nøkkelen din (fra ssh-keygen -lf ~/.ssh/id_ed25519.pub) og svar på spørsmålene om hvor den private nøkkelen din ligger og hva du gjør hvis du mister den. Programmet kontrollerer bare at fingeravtrykket har riktig form; resten gjør du selv.
Oppgave O2.1: Lag og bruk en nøkkel
Denne oppgaven gjør du selv; ingen kontrollerer den. Kryss av det du har gjort, og merk oppgaven som fullført.
Den private nøkkelen blir på din egen enhet, kryptert med en passfrase, ikke i en skymappe eller e-post. Blir enheten stjålet, fjerner du linjen for den enheten fra authorized_keys på hver server og lager en ny nøkkel. Lim aldri inn den private nøkkelen din, heller ikke her.
Avkrysningene og notatene dine blir kun i denne nettleseren; vi sender dem ikke noe sted. Er du logget inn, lagrer vi kun i Mine kurs at du har gjort oppgaven.
Les mer
Stegene i disse artiklene gjelder for VPS-skjermbildet og panelene hos WebOké; hos andre leverandører fungerer det på lignende måte.
- Logg inn på VPS-en din med SSH (og lag en SSH-nøkkel)
- DirectAdmin-veiledning 15.2: SSH Keys og innlogging med SSH
- Har du ikke lenger tilgang til VPS-en din? Dette gjør du nå
- Håndbok for ssh-keygen: https://man.openbsd.org/ssh-keygen
- Utgivelsesnotater for OpenSSH 9.5 (ed25519 som standard): https://www.openssh.org/txt/release-9.5
