SSH-nyckelautentisering är den säkraste metoden för att logga in på din VPS. Istället för att använda lösenord som kan gissas eller bruteforcas, använder ssh nycklar vps kryptografiska nyckelpar som är praktiskt taget omöjliga att knäcka. I den här guiden visar vi dig hur du genererar ssh nyckel, konfigurerar ssh key authentication på din server och inaktiverar lösenordsinloggning för att uppnå säker ssh inloggning. När du är klar kan du logga in ssh utan lösenord och samtidigt ha betydligt bättre säkerhet än traditionella lösenordsbaserade metoder.
Konfigurera SSH-nycklar steg för steg
-
Steg 1: Förstå fördelarna med SSH-nyckelautentisering
Innan du börjar är det viktigt att förstå varför SSH-nycklar är överlägset lösenord. SSH-nyckelpar består av en privat nyckel (som du aldrig delar) och en publik nyckel (som du placerar på servern). Den privata nyckeln är typiskt 2048-4096 bitar lång, vilket gör den praktiskt taget omöjlig att gissa. Till skillnad från lösenord kan SSH-nycklar inte bruteforcas på samma sätt, och du slipper komma ihåg komplexa lösenord.
Ytterligare fördelar inkluderar möjligheten att automatisera inloggningar i skript, centraliserad nyckelhantering och möjlighet att använda SSH-agent för att låsa upp nyckeln en gång per session istället för vid varje anslutning.
-
Steg 2: Generera SSH-nyckelpar på din lokala dator
Öppna terminalen på din lokala dator (Linux, macOS eller Windows med WSL/Git Bash) och kör följande kommando för att generera ett nytt SSH-nyckelpar:
ssh-keygen -t ed25519 -C "din.email@example.com"Om ditt system inte stödjer Ed25519-algoritmen (äldre system), använd RSA istället:
ssh-keygen -t rsa -b 4096 -C "din.email@example.com"Du kommer att bli ombedd att välja var nyckeln ska sparas. Standardplatsen är
~/.ssh/id_ed25519(eller~/.ssh/id_rsa), vilket fungerar utmärkt för de flesta. Tryck Enter för att acceptera.Därefter ombeds du ange en passphrase (lösenordsfras). Detta är ett extra säkerhetslager som krypterar din privata nyckel. Även om det är valfritt rekommenderar vi starkt att du använder en stark passphrase – om någon får tillgång till din privata nyckelfil kan de inte använda den utan passphrasen.
-
Steg 3: Kopiera den publika nyckeln till din VPS
Det enklaste sättet att kopiera din publika nyckel till servern är att använda verktyget
ssh-copy-id:ssh-copy-id användarnamn@din-server-ipErsätt
användarnamnmed ditt användarnamn på VPS:en ochdin-server-ipmed serverns IP-adress. Du kommer att bli ombedd att ange ditt nuvarande lösenord för servern. Efter lyckad autentisering kopieras din publika nyckel till~/.ssh/authorized_keyspå servern.Om
ssh-copy-idinte är tillgängligt kan du kopiera nyckeln manuellt:cat ~/.ssh/id_ed25519.pub | ssh användarnamn@din-server-ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"Detta kommando läser din publika nyckel och lägger till den i authorized_keys-filen på servern.
-
Steg 4: Testa inloggning med SSH-nyckel
Nu är det dags att verifiera att ssh key authentication fungerar korrekt. Logga ut från servern om du är inloggad, och försök sedan logga in igen:
ssh användarnamn@din-server-ipOm allt är korrekt konfigurerat kommer du antingen att loggas in direkt (om du inte satte en passphrase) eller bli ombedd att ange passphrasen för din privata nyckel (inte serverlösenordet). Detta bekräftar att du nu använder säker ssh inloggning med nyckelbaserad autentisering.
Om du fortfarande blir ombedd att ange serverlösenordet, kontrollera att din publika nyckel verkligen finns i
~/.ssh/authorized_keyspå servern och att filrättigheterna är korrekta (authorized_keys ska vara 600, .ssh-mappen ska vara 700). -
Steg 5: Inaktivera lösenordsinloggning i sshd_config
När du har bekräftat att nyckelautentisering fungerar är det dags att stänga av lösenordsinloggning helt för maximal säkerhet. Logga in på din VPS och öppna SSH-konfigurationsfilen:
sudo nano /etc/ssh/sshd_configHitta följande rader och ändra dem (ta bort # om de är kommenterade):
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM noKontrollera också att följande rad är aktiverad:
PubkeyAuthentication yesSpara filen (Ctrl+O, Enter, Ctrl+X i nano) och starta om SSH-tjänsten:
sudo systemctl restart sshdViktigt: Innan du stänger din nuvarande SSH-session, öppna en ny terminal och testa att logga in med SSH-nyckeln. Om något gått fel har du fortfarande din ursprungliga session öppen för att återställa ändringarna. Mer information om att hantera servern finns i vår guide om hur man startar, stoppar eller startar om VPS från Launchpad-instrumentpanelen.
-
Steg 6: Konfigurera SSH-agent för enklare hantering
Om du använder en passphrase för din privata nyckel (vilket du bör göra) kan det bli jobbigt att skriva in den varje gång du ansluter. SSH-agent löser detta genom att låsa upp nyckeln en gång per session och hålla den i minnet.
Starta SSH-agent och lägg till din nyckel:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519Du kommer att bli ombedd att ange passphrasen en gång. Därefter kan du logga in ssh utan lösenord under resten av din session. På macOS kan du lägga till
--apple-use-keychainför att spara passphrasen i systemets nyckelring:ssh-add --apple-use-keychain ~/.ssh/id_ed25519På Linux-system med GNOME eller KDE startas ofta SSH-agent automatiskt vid inloggning.
-
Steg 7: Hantera flera SSH-nycklar med config-fil
Om du hanterar flera servrar eller använder olika nycklar för olika ändamål kan SSH config-filen förenkla ditt arbetsflöde avsevärt. Skapa eller redigera
~/.ssh/configpå din lokala dator:nano ~/.ssh/configLägg till konfiguration för varje server:
Host produktionsserver HostName 192.168.1.100 User root IdentityFile ~/.ssh/id_ed25519 Port 22 Host testserver HostName test.example.com User admin IdentityFile ~/.ssh/id_rsa_test Port 2222Nu kan du ansluta till dina servrar med enkla kommandon:
ssh produktionsserver ssh testserverSSH använder automatiskt rätt IP-adress, användarnamn, nyckel och port baserat på dina inställningar.
-
Steg 8: Felsökning – Vanliga problem med SSH-nycklar
Om du stöter på problem med SSH-nyckelautentisering, här är de vanligaste orsakerna och lösningarna:
Problem: Blir fortfarande tillfrågad om lösenord
- Kontrollera filrättigheterna på servern:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys - Verifiera att din publika nyckel finns i authorized_keys:
cat ~/.ssh/authorized_keys - Kontrollera att PubkeyAuthentication är aktiverat i /etc/ssh/sshd_config
Problem: "Permission denied (publickey)"
- Använd
ssh -v användarnamn@serverför detaljerad felsökningsutdata - Kontrollera att du använder rätt användarnamn
- Verifiera att rätt privat nyckel används (kontrollera ~/.ssh/config eller använd
ssh -i ~/.ssh/nyckel)
Problem: SSH-agent fungerar inte
- Kontrollera att agenten körs:
echo $SSH_AUTH_SOCKska visa en sökväg - Lista tillagda nycklar:
ssh-add -l - Lägg till nyckeln igen om den saknas:
ssh-add ~/.ssh/id_ed25519
Om du behöver återställa åtkomsten till din server helt och hållet kan du använda vår guide om hur man återställer rootlösenordet från VPS-hanteringspanelen.
- Kontrollera filrättigheterna på servern:
Vanliga problem och felsökning
Utöver de problem som nämnts ovan finns det några ytterligare situationer du kan stöta på:
- SELinux blockerar SSH-nyckelautentisering: På CentOS/RHEL-system kan SELinux ibland orsaka problem. Kontrollera med
sudo ausearch -m avc -ts recentoch justera SELinux-kontext om nödvändigt:restorecon -R -v ~/.ssh - Fel nyckeltyp används: Äldre servrar kanske inte stödjer Ed25519. Generera en RSA-nyckel istället med
ssh-keygen -t rsa -b 4096 - Authorized_keys ignoreras: Kontrollera att AuthorizedKeysFile-direktivet i sshd_config pekar på rätt plats (standard är .ssh/authorized_keys)
- Hemkatalogen har fel rättigheter: Hemkatalogen får inte vara skrivbar för grupp eller andra:
chmod 755 ~
För mer avancerad serverkonfiguration kan du också läsa våra guider om hur man konfigurerar Apache Virtual Hosts på Ubuntu 20.04 eller hur man konfigurerar Apache Virtual Hosts på CentOS 7 för att fortsätta säkra och optimera din VPS.