Modul 2 · 2.1
Opret og brug SSH-nøgler
Modul 2: SSH og nøgler · Læsetid: 10 minutter
Læringsmål: Efter denne lektion kan du oprette et nøglepar, lægge den offentlige nøgle på din server, logge ind uden adgangskode og opbevare din private nøgle, så en mistet bærbar ikke bliver en katastrofe.
Centrale begreber: nøglepar, offentlig nøgle, privat nøgle, ed25519, RSA, passphrase, ssh-agent, ssh-copy-id, authorized_keys, rettigheder 700 og 600, én nøgle pr. enhed, FIDO2-nøgle
Hvorfor nøgler er bedre end adgangskoder
I lektion 1.3 loggede du ind med en adgangskode. Det virker, men en server på internettet får fra første minut besøg af programmer, der gætter adgangskoder. Kig bare i loggen på en helt ny server:
root@web1:~# journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
214Hundredvis af forsøg i timen er normalt. En stærk adgangskode holder dem ude, men du har skabt et svagt punkt, du ikke har brug for. Med en SSH-nøgle er det nytteløst at gætte: der er intet at gætte, som står i en ordliste.
En nøgle består af to dele, der hører sammen, et nøglepar:
- Den private nøgle bliver på din egen computer. Den, der har denne fil (og kender passphrasen), kan logge ind. Del den aldrig med nogen, heller ikke med din udbyder eller en helpdesk.
- Den offentlige nøgle giver du til serveren. Den må alle se: man kan ikke logge ind med den, kun kontrollere med den.
Når du logger ind, sender serveren ingen adgangskode over forbindelsen. Din computer beviser med en signatur, at den har den private nøgle, og serveren kontrollerer signaturen med den offentlige nøgle. Selv hvis nogen lytter med på netværket, ser de intet, de senere kan genbruge.
Opret en nøgle
Du opretter nøglen på din egen computer, ikke på serveren. På Windows 10 og 11, macOS og Linux er ssh-keygen allerede med. Åbn 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 2026Hvad sker der her?
-t ed25519vælger typen. Ed25519 er kort, hurtig og sikker, og siden OpenSSH 9.5 også standardtypen, hvis du ikke angiver noget. Skal du betjene et gammelt system, der ikke kender ed25519, så brug RSA med mindst 3072 bit:ssh-keygen -t rsa -b 4096. Ældre typer som DSA er fjernet fra OpenSSH; brug dem ikke.-Cer kun en kommentar. Skriv noget, så du senere kan se, hvilken enhed nøglen kommer fra. Det hjælper enormt, når du skal trække en nøgle tilbage.- Passphrasen krypterer den private nøgle på din disk. Bliver din bærbare stjålet, har tyven en krypteret fil. Uden passphrase har tyven straks adgang til alle dine servere.
Du har nu to filer:
| Fil | Hvad | Dele? |
|---|---|---|
~/.ssh/id_ed25519 | Privat nøgle | Aldrig |
~/.ssh/id_ed25519.pub | Offentlig nøgle, én linje tekst | Ja, til serveren |
På Windows ligger de i C:\Users\anna\.ssh\. Den offentlige nøgle er én linje, der begynder med ssh-ed25519:
anna@laptop:~$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk2... anna@laptop 2026Læg den offentlige nøgle på serveren
Serveren leder efter offentlige nøgler i filen ~/.ssh/authorized_keys hos den bruger, du logger ind som. Hver linje er én nøgle. Der er tre måder at få din nøgle derind på:
1. Ved installationen. De fleste udbydere har et felt til din offentlige nøgle, når du opretter eller geninstallerer en VPS. Hos WebOké hedder feltet "SSH-nøgle" i VPS-skærmen; hos andre udbydere fungerer det på samme måde. Det er den bedste måde: så behøver login med adgangskode aldrig at være slået til.
2. Med ssh-copy-id (macOS og Linux), mens login med adgangskode stadig virker:
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. Manuelt, for eksempel fra Windows eller via din udbyders konsol. Indsæt linjen fra din .pub-fil i authorized_keys, og sæt rettighederne korrekt:
anna@web1:~$ mkdir -p ~/.ssh
anna@web1:~$ nano ~/.ssh/authorized_keys
anna@web1:~$ chmod 700 ~/.ssh
anna@web1:~$ chmod 600 ~/.ssh/authorized_keysRettighederne er ikke en detalje. SSH-serveren kontrollerer dem (indstillingen StrictModes er slået til som standard): hvis andre må skrive i din .ssh-mappe eller din hjemmemappe, ignorerer den dine nøgler. Du ser så bare en adgangskodeforespørgsel igen, uden nogen tydelig fejlmeddelelse. Hvordan du læser rettigheder, lærer du i lektion 3.1.
Test derefter i et nyt vindue:
anna@laptop:~$ ssh anna@192.0.2.10
Enter passphrase for key '/home/anna/.ssh/id_ed25519':
anna@web1:~$Spørgsmålet kommer nu fra din egen computer (passphrasen til din nøgle), ikke længere fra serveren.
ssh-agent: lås op én gang
Det er besværligt at skrive en passphrase hver gang. ssh-agent holder din oplåste nøgle i hukommelsen, så længe du er logget ind på din computer:
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 sig til nøgleringen, på Windows er det tjenesten "OpenSSH Authentication Agent" (slå den til én gang under Tjenester). Så får du nemheden ved ingen adgangskode og alligevel en krypteret nøgle på disken.
Pas på med agent forwarding (ssh -A): så må den server, du logger ind på, bruge din agent. Den, der er root på serveren, kan så komme videre med din nøgle. Brug det kun på servere, du stoler fuldt på, eller brug ProxyJump (lektion 2.3).
Én nøgle pr. enhed, og hold styr på hvor de ligger
En almindelig fejl: at kopiere én privat nøgle til bærbar, pc og telefon. Mister du én enhed, skal du udskifte nøglen alle steder og sætte alle enheder op igen. Bedre:
- opret en egen nøgle på hver enhed, med en tydelig kommentar (
-C "anna@telefoon"); - læg alle offentlige nøgler i
authorized_keys, én pr. linje; - mister du en enhed, så fjern kun den ene linje.
Tjek jævnligt, hvilke nøgler der har adgang:
anna@web1:~$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)
256 SHA256:Zt5oP1yW8eQ3rK6sV0bN9mD2xA4cH7jL1uI5fG8tE3w anna@telefoon (ED25519)Er der en nøgle, du ikke genkender, er det et alarmsignal (lektion 10.3). Indbrudstyve lægger gerne deres egen nøgle i authorized_keys for at kunne komme tilbage senere.
En hardwarenøgle (FIDO2, som en YubiKey) er også en mulighed. Med ssh-keygen -t ed25519-sk ligger den hemmelige del på selve nøglen, og du skal røre den ved hver brug. En stjålet fil er så værdiløs. Det er et fint skridt videre, men ikke nødvendigt for at komme i gang.
Har du mistet din private nøgle?
Mister du din eneste private nøgle, og er login med adgangskode slået fra, kan du ikke længere komme ind via SSH. Derfor:
- læg altid mindst to nøgler på serveren (for eksempel bærbar og pc);
- vid, hvordan din udbyders konsol virker (lektion 1.2). Der logger du ind, som om du havde sat et tastatur i serveren, og det virker også uden SSH. Hos WebOké hedder det Console i VPS-skærmen; andre udbydere kalder det VNC-konsol, webkonsol eller nødkonsol.
På AlmaLinux og Rocky Linux
Alt i denne lektion fungerer på samme måde. Én ekstra faldgrube: med SELinux slået til skal ~/.ssh have den rigtige sikkerhedsmærkat. Har du oprettet eller kopieret mappen manuelt, og bliver din nøgle ignoreret, så retter restorecon -Rv ~/.ssh det.
Opsummering
- Et nøglepar består af en privat nøgle (bliver hos dig) og en offentlig nøgle (går til serveren, i
~/.ssh/authorized_keys). - Opret nøgler med
ssh-keygen -t ed25519på din egen computer, med en passphrase; brug ssh-agent for nemhedens skyld. - Rettigheder tæller:
~/.sshpå 700 ogauthorized_keyspå 600, ellers ignorerer serveren din nøgle. - Én nøgle pr. enhed, med en tydelig kommentar, så du kan trække én tilbage.
- Sørg for en ekstra nøgle, og kend din udbyders konsol som nødindgang.
Quiz
Opgave
Opgave O2.1: Opret og brug en nøgle. Opret en ed25519-nøgle med en passphrase og en tydelig kommentar på din egen computer, læg den på din server (via udbyderens felt, ssh-copy-id eller manuelt), kontrollér rettighederne, og log ind med nøglen i et nyt vindue. Udfyld derefter din nøgles fingeraftryk (fra ssh-keygen -lf ~/.ssh/id_ed25519.pub), og besvar spørgsmålene om, hvor din private nøgle ligger, og hvad du gør, hvis du mister den. Programmet kontrollerer kun, om fingeraftrykket har den rigtige form; resten gør du selv.
Opgave O2.1: Opret og brug en nøgle
Denne opgave laver du selv; ingen tjekker den. Afkryds hvad du har gjort, og markér opgaven som udført.
Den private nøgle bliver på din egen enhed, krypteret med en passphrase, ikke i en cloudmappe eller en mail. Hvis den bliver stjålet, fjerner du linjen for den enhed fra authorized_keys på alle servere og opretter en ny nøgle. Indsæt aldrig din private nøgle, heller ikke her.
Dine afkrydsninger og noter forbliver kun i denne browser; vi sender dem ingen steder hen. Er du logget ind, gemmer vi kun i Mine kurser, at du har udført opgaven.
Læs mere
Trinene i disse artikler gælder for VPS-skærmen og panelerne hos WebOké; hos andre udbydere fungerer det på samme måde.
- Log ind på din VPS med SSH (og opret en SSH-nøgle)
- DirectAdmin vejledning 15.2: SSH-nøgler og login med SSH
- Ingen adgang til din VPS længere: hvad nu?
- Vejledning til ssh-keygen: https://man.openbsd.org/ssh-keygen
- OpenSSH 9.5 release notes (ed25519 som standard): https://www.openssh.org/txt/release-9.5
- Fjern SSH-adgang til din VPS for en tidligere medarbejder eller en bortkommet bærbar
- VPS: fra første login til sikker server 2.2: Opret en SSH-nøgle på Windows, Mac og Linux
- VPS: fra første login til sikker server 2.3: Læg din nøgle på serveren, og test den
