Modul 2 · 2.1
Skapa och använda SSH-nycklar
Modul 2: SSH och nycklar · Lästid: 10 minuter
Lärandemål: Efter den här lektionen kan du skapa ett nyckelpar, lägga den publika nyckeln på din server, logga in utan lösenord och förvara din privata nyckel så att en borttappad laptop inte blir en katastrof.
Nyckelbegrepp: nyckelpar, publik nyckel, privat nyckel, ed25519, RSA, lösenfras, ssh-agent, ssh-copy-id, authorized_keys, rättigheter 700 och 600, en nyckel per enhet, FIDO2-nyckel
Varför nycklar är bättre än lösenord
I lektion 1.3 loggade du in med ett lösenord. Det fungerar, men en server på internet får redan från första minuten besök av program som gissar lösenord. Titta bara i loggen på en helt ny server:
root@web1:~# journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
214Hundratals försök i timmen är normalt. Ett starkt lösenord stoppar dem, men du har skapat en svag punkt som du inte behöver. Med en SSH-nyckel är det meningslöst att gissa: det finns inget att gissa som står i en ordlista.
En nyckel består av två delar som hör ihop, ett nyckelpar:
- Den privata nyckeln stannar på din egen dator. Den som har den här filen (och kan lösenfrasen) kan logga in. Dela den inte med någon, inte heller med din leverantör eller en helpdesk.
- Den publika nyckeln ger du till servern. Den får vem som helst se: du kan inte logga in med den, bara kontrollera.
Vid inloggningen skickas inget lösenord över linjen. Din dator bevisar med en signatur att den har den privata nyckeln, och servern kontrollerar signaturen med den publika nyckeln. Även om någon tjuvlyssnar på nätverket ser hen inget som kan återanvändas senare.
Skapa en nyckel
Du skapar nyckeln på din egen dator, inte på servern. I Windows 10 och 11, macOS och Linux finns ssh-keygen redan. Öppna 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 2026Vad händer här?
-t ed25519väljer typ. Ed25519 är kort, snabb och säker, och sedan OpenSSH 9.5 även standardtypen om du inte anger något. Måste du hantera ett gammalt system som inte känner till ed25519, ta då RSA med minst 3072 bitar:ssh-keygen -t rsa -b 4096. Äldre typer som DSA har tagits bort ur OpenSSH; använd dem inte.-Cär bara en kommentar. Skriv något som senare visar vilken enhet nyckeln kommer från. Det hjälper enormt när du behöver återkalla en nyckel.- Lösenfrasen krypterar den privata nyckeln på din disk. Blir din laptop stulen har tjuven en krypterad fil. Utan lösenfras har hen direkt åtkomst till alla dina servrar.
Du har nu två filer:
| Fil | Vad | Dela? |
|---|---|---|
~/.ssh/id_ed25519 | Privat nyckel | Aldrig |
~/.ssh/id_ed25519.pub | Publik nyckel, en rad text | Ja, till servern |
I Windows ligger de i C:\Users\anna\.ssh\. Den publika nyckeln är en rad som börjar med ssh-ed25519:
anna@laptop:~$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk2... anna@laptop 2026Lägg den publika nyckeln på servern
Servern letar efter publika nycklar i filen ~/.ssh/authorized_keys hos användaren du loggar in som. Varje rad är en nyckel. Det finns tre sätt att få dit din nyckel:
1. Vid installationen. De flesta leverantörer har ett fält för din publika nyckel när du skapar eller installerar om en VPS. Hos WebOké heter fältet "SSH-nyckel" i VPS-vyn; hos andra leverantörer fungerar det på liknande sätt. Det här är det bästa sättet: då behöver lösenordsinloggning aldrig vara påslagen.
2. Med ssh-copy-id (macOS och Linux), medan lösenordsinloggning fortfarande fungerar:
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. För hand, till exempel från Windows eller via leverantörens konsol. Klistra in raden från din .pub-fil i authorized_keys och ställ in rättigheterna:
anna@web1:~$ mkdir -p ~/.ssh
anna@web1:~$ nano ~/.ssh/authorized_keys
anna@web1:~$ chmod 700 ~/.ssh
anna@web1:~$ chmod 600 ~/.ssh/authorized_keysDe rättigheterna är ingen detalj. SSH-servern kontrollerar dem (inställningen StrictModes är påslagen som standard): om andra får skriva i din .ssh-mapp eller din hemmapp ignorerar den dina nycklar. Du får då bara en lösenordsfråga igen, utan något tydligt felmeddelande. Hur du läser rättigheter lär du dig i lektion 3.1.
Testa sedan i ett nytt fönster:
anna@laptop:~$ ssh anna@192.0.2.10
Enter passphrase for key '/home/anna/.ssh/id_ed25519':
anna@web1:~$Frågan kommer nu från din egen dator (lösenfrasen för din nyckel), inte längre från servern.
ssh-agent: lås upp en gång
Att skriva lösenfrasen varje gång är jobbigt. ssh-agent håller din upplåsta nyckel i minnet så länge du är inloggad på din dator:
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 kopplas agenten till nyckelringen, i Windows är det tjänsten "OpenSSH Authentication Agent" (slå på den en gång under Tjänster). Så får du bekvämligheten av att slippa lösenord och har ändå en krypterad nyckel på disken.
Var försiktig med agent forwarding (ssh -A): då får servern du loggar in på använda din agent. Den som är root på den servern kan då gå vidare med din nyckel. Använd det bara på servrar du litar helt på, eller använd ProxyJump (lektion 2.3).
En nyckel per enhet, och vet vilka som ligger var
Ett vanligt misstag: att kopiera en och samma privata nyckel till laptop, dator och telefon. Tappar du bort en enhet måste du byta nyckeln överallt och ställa in alla enheter på nytt. Bättre:
- skapa en egen nyckel på varje enhet, med en tydlig kommentar (
-C "anna@telefoon"); - lägg alla publika nycklar i
authorized_keys, en per rad; - tappar du bort en enhet tar du bara bort just den raden.
Kontrollera regelbundet vilka nycklar som har åtkomst:
anna@web1:~$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)
256 SHA256:Zt5oP1yW8eQ3rK6sV0bN9mD2xA4cH7jL1uI5fG8tE3w anna@telefoon (ED25519)Finns det en nyckel du inte känner igen är det en varningssignal (lektion 10.3). Inkräktare lägger gärna in sin egen nyckel i authorized_keys för att kunna komma tillbaka senare.
En hårdvarunyckel (FIDO2, till exempel en YubiKey) går också bra. Med ssh-keygen -t ed25519-sk ligger den hemliga delen på själva nyckeln och du måste röra vid den varje gång den används. En stulen fil är då värdelös. Det är ett fint steg vidare, men inte nödvändigt för att komma igång.
Har du tappat bort din privata nyckel?
Tappar du bort din enda privata nyckel och lösenordsinloggning är avstängd kommer du inte längre in via SSH. Därför:
- lägg alltid minst två nycklar på servern (till exempel laptop och dator);
- ta reda på hur leverantörens konsol fungerar (lektion 1.2). Där loggar du in som om du kopplade ett tangentbord till servern, och det fungerar även utan SSH. Hos WebOké heter det Konsol i VPS-vyn; andra leverantörer kallar det VNC-konsol, webbkonsol eller nödkonsol.
På AlmaLinux och Rocky Linux
Allt i den här lektionen fungerar likadant. En extra fallgrop: med SELinux påslaget måste ~/.ssh ha rätt säkerhetsetikett. Har du skapat eller kopierat mappen för hand och ignoreras din nyckel, så rättar restorecon -Rv ~/.ssh det.
Sammanfattning
- Ett nyckelpar består av en privat nyckel (stannar hos dig) och en publik nyckel (går till servern, i
~/.ssh/authorized_keys). - Skapa nycklar med
ssh-keygen -t ed25519på din egen dator, med en lösenfras; använd ssh-agent för bekvämlighetens skull. - Rättigheter spelar roll:
~/.sshpå 700 ochauthorized_keyspå 600, annars ignorerar servern din nyckel. - En nyckel per enhet, med en tydlig kommentar, så att du kan återkalla en av dem.
- Ha en andra nyckel och lär dig leverantörens konsol som nödingång.
Quiz
Uppgift
Uppgift O2.1: Skapa och använd en nyckel. Skapa en ed25519-nyckel med lösenfras och en tydlig kommentar på din egen dator, lägg den på din server (via leverantörens fält, ssh-copy-id eller för hand), kontrollera rättigheterna och logga in med nyckeln i ett nytt fönster. Fyll sedan i fingeravtrycket för din nyckel (från ssh-keygen -lf ~/.ssh/id_ed25519.pub) och svara på frågorna om var din privata nyckel finns och vad du gör om du tappar bort den. Programmet kontrollerar bara att fingeravtrycket har rätt format; resten gör du själv.
Uppgift O2.1: Skapa och använd en nyckel
Den här uppgiften gör du själv; ingen kontrollerar den. Bocka av vad du har gjort och markera uppgiften som klar.
Den privata nyckeln stannar på din egen enhet, krypterad med en lösenfras, inte i en molnmapp eller i e-post. Vid stöld tar du bort raden för den enheten ur authorized_keys på varje server och skapar en ny nyckel. Klistra aldrig in din privata nyckel, inte heller här.
Dina bockar och anteckningar sparas bara i den här webbläsaren; vi skickar dem ingenstans. Är du inloggad sparar vi i Mina kurser bara att du har gjort uppgiften.
Läs mer
Stegen i de här artiklarna gäller VPS-vyn och panelerna hos WebOké; hos andra leverantörer fungerar det på liknande sätt.
- Logga in på din VPS med SSH (och skapa en SSH-nyckel)
- DirectAdmin-guide 15.2: SSH-nycklar och inloggning med SSH
- Ingen åtkomst till din VPS längre: vad gör du nu?
- Manual för ssh-keygen: https://man.openbsd.org/ssh-keygen
- Release notes för OpenSSH 9.5 (ed25519 som standard): https://www.openssh.org/txt/release-9.5
