Ställ in en säker lösenordslös inloggning till din fjärranslutna Ubuntu-server med hjälp av SSH-nycklar
SSH är ett säkert klient-server-nätverksprotokoll som hjälper en klientdator att ansluta och kommunicera med en fjärrserver. SSH-anslutning säkerställer att de kommandon som skrivs i terminalen skickas till fjärrservern via en krypterad kanal.
Det finns två typer av autentiseringsmekanismer som används för att ansluta till fjärrservern, lösenordsbaserad autentisering (benägen för Brute-force-attacker) och SSH Keys-baserad autentisering (vilket är mycket säkert).
I den SSH-nyckelbaserade autentiseringen genereras ett nyckelpar på klientdatorn, som kallas den offentliga nyckeln och den privata nyckeln. En kopia av denna publika nyckel görs tillgänglig på fjärrservern. När en klient skickar en anslutningsbegäran till servern genererar servern en slumpmässig sträng och krypterar den med den publika nyckeln. Denna sträng kan endast dekrypteras med den privata nyckeln som finns på klientdatorn. Denna metod säkerställer att servern endast kan nås av klienter som innehåller den privata nyckeln.
I den här guiden kommer vi att se hur du ställer in SSH-nycklar på Ubuntu 20.04 LTS-servern.
Se om du har någon befintlig SSH-nyckel på din dator
För att kontrollera om ett SSH-nyckelpar redan finns på din dator, skriv in detta kommando i din terminal.
ls -l ~/.ssh/id_*.pub
Om kommandot ovan returnerar ingen sådan fil eller katalog
eller inga matchningar funna
, då betyder det att SSH-nyckelparet inte existerar.
Om du har ett befintligt SSH-nyckelpar kan du antingen använda samma nyckelpar för att komma åt två fjärrservrar, eller så kan du också skapa ett annat nyckelpar med ett annat namn. Låt oss gå vidare till nästa steg och se hur man genererar SSH-nycklar för båda fallen.
Skapa SSH-nycklar på en klientdator
För att generera ett nytt SSH-nyckelpar på din dator skriv kommandot som visas nedan.
ssh-keygen
Som standard är SSH-nycklarna 2048 bitar. För bättre säkerhet, om du vill generera SSH-nycklar med högre bitar, använd sedan följande kommando.
ssh-keygen -b 4096
Om kommandot körs framgångsrikt kommer följande meddelande att visas på skärmen.
genererar offentligt/privat rsa-nyckelpar. Ange filen där du vill spara nyckeln (/home/harshit/.ssh/id_rsa):
Om du nu inte har något befintligt SSH-nyckelpar på din dator trycker du bara på Stiga på
, men om du har en befintlig SSH-nyckel sparar du nyckeln med ett annat filnamn som visas nedan.
Ange filen där du vill spara nyckeln (/home/ditt_namn/.ssh/id_rsa): /home/ditt_namn/.ssh/id_rsa_xxx
Ersätt xxx
i slutet av filnamnet med ett lämpligt namn, som visas nedan och tryck Stiga på
.
Ange fil där du vill spara nyckeln (/home/ditt_namn/.ssh/id_rsa): /home/ditt_namn/.ssh/id_rsa_client_1
Nästa uppmaning kommer att be dig att ange en lösenfras av en godtycklig längd, det kommer att säkerställa tvånivåsäkerhet på din enhet.
Ange lösenfras (tom för ingen lösenfras): Ange samma lösenfras igen:
Om du anger denna lösenfras säkerställs att även om en person får tillgång till din privata nyckel, kommer han inte att kunna komma åt din fjärrserver utan denna lösenfras.
När hela processen är klar visas följande meddelande på skärmen.
SSH-nycklarna har genererats på ditt system. Nu är det dags att kopiera den publika nyckeln på fjärrservern.
Kopiera den offentliga nyckeln till Remote Ubuntu Server
Den enklaste och snabbaste metoden att kopiera den offentliga nyckeln till fjärrservern är att använda ssh-copy-id
verktyg. Men om det här verktyget inte är tillgängligt på din maskin av någon anledning kan du också använda andra metoder som finns i det här avsnittet.
Använder verktyget ssh-copy-id
De ssh-copy-id
verktyget är som standard tillgängligt på din Ubuntu-maskin som kopierar den publika nyckeln från din enhet till lämplig katalog på din fjärranslutna Ubuntu-maskin.
För att kopiera den offentliga ssh-nyckeln skriv helt enkelt kommandot i din terminal, som visas nedan.
ssh-copy-id användarnamn@värdnamn
Ersätt Användarnamn
och värdnamn
i kommandot ovan med användarnamnet och värdnamnet för din server.
Följande meddelande visas på din terminal om du ansluter till din värd för första gången, skriv ja
och tryck Stiga på
.
Äktheten för värd' 172.105.XX.XX (172.105.XX.XX)' kan inte fastställas. ECDSA-nyckelns fingeravtryck är xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Är du säker på att du vill fortsätta ansluta (ja/nej)? ja
Nu den ssh-copy-id
verktyget kommer att söka efter filen med namnet id_rsa.pub
som innehåller den offentliga SSH-nyckeln. När skanningsprocessen är klar kommer den att uppmana dig att ange lösenordet för din fjärrserver, som visas nedan. Skriv lösenordet och tryck Stiga på
.
/usr/bin/ssh-copy-id: INFO: försöker logga in med de nya nycklarna, för att filtrera bort alla som redan är installerade /usr/bin/ssh-copy-id: INFO: 1 nyckel(r) ) återstår att installera -- om du uppmanas nu är det att installera de nya nycklarna [email protected]:s lösenord:
När nyckeln har lagts till kommer följande meddelande att visas på din terminal som utdata.
Antal nycklar som lagts till: 1 Försök nu att logga in på maskinen, med: "ssh '[email protected]'" och kontrollera att endast den eller de nycklar du ville ha lagts till.
Om du har flera SSH-nycklar på din klientdator, skriv kommandot i mönstret nedan för att kopiera lämplig publik nyckel till din fjärrdator.
ssh-copy-id -i id_rsa_xxx.pub användarnamn@värd
💡 Tips
Glöm inte att sätta .pub i slutet av filnamnet när du skriver i terminalen.
Kopiera den offentliga nyckeln med hjälp av rörmetoden
Skriv följande kommando i terminalen if ssh-copy-id
verktyget är inte tillgängligt. Det här kommandot kan verka lite längre men det fungerar korrekt.
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Byta ut fjärranvändarnamn
och server IP adress
med ditt användarnamn och IP-adress.
Om du har flera SSH-nycklar tillgängliga på din dator byt då ut id_rsa.pub
med den offentliga SSH-nyckelfilen du väljer. Till exempel, id_rsa_client_1.pub
.
Ange fjärranvändarlösenordet när du uppmanas och tryck Stiga på
.
[email protected]:s lösenord:
När du har skrivit in lösenordet visas id_rsa.pub
filen kommer att kopieras till auktoriserade_nycklar
fil från fjärrservern.
Manuell kopiering av den offentliga nyckeln
Använd den här metoden när du inte har tillgång till ditt fjärrsystem genom lösenordsautentisering.
Öppna id_rsa.pub
fil med hjälp av katt
kommandot i terminalen. Du kan också öppna den från en textredigerare, syftet är bara att kopiera innehållet i filen.
katt ~/.ssh/id_rsa.pub
Innehållet i filen kommer att se ut som visas nedan.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH ditt_namn @ your_PC
Logga nu in på din fjärrserver och klistra in det kopierade innehållet med kommandot som visas nedan. Ersätt ovan_sträng
med det kopierade innehållet.
echo above_string >> ~/.ssh/authorized_keys
Konfigurera flera SSH-nycklar (valfritt)
Det här steget är för personer som har flera SSH-nycklar konfigurerade på sin klientdator. Hoppa över det här avsnittet om du bara har en SSH-nyckelinstallation.
För att hantera flera SSH-nycklar kommer vi nu att skapa en config
fil inuti .ssh
katalog med kommandot som visas nedan.
cd ~/.ssh vim config
Typ i
för att gå in i kommandoläge och skriva in detaljerna för flera värdar, som visas i följande exempel:
Host remote-ubuntu-server HostName 172.105.XX.XX Användarrot IdentityFile ~/.ssh/id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX Användarrot IdentityFile ~/.ssh/id_rsa_client_2
På samma sätt skriver du in detaljerna för andra fjärrservrar och deras nycklar. När processen är klar, tryck på Esc
och :wq
för att spara och avsluta.
Nu är de efterföljande processerna desamma för att båda har enstaka eller flera SSH-nycklar på klientdatorn.
Logga in på din fjärrserver med SSH-nycklar
När processen att kopiera din publika nyckel är klar, logga in på din fjärrserver genom att skriva kommandot som visas nedan.
ssh fjärranvändarnamn@server_ip_adress
Om du angav lösenfrasen när du genererade nyckelparet kommer du att bli ombedd att ange den. En ny session öppnas efter att autentiseringsprocessen är klar.
Du har nu framgångsrikt konfigurerat den SSH-nycklarbaserade autentiseringen på din fjärrserver. Men den lösenordsbaserade autentiseringen är fortfarande aktiv på din server, detta betyder att din fjärrserver fortfarande är utsatt för brute-force-attacker.
Så nu kommer vi att inaktivera den lösenordsbaserade inloggningsmekanismen helt från vår fjärrserver.
Inaktivera lösenordsbaserad inloggningsmekanism
Innan du gör några ändringar, se till att root-användaren eller någon sudo-aktiverad användare för ditt fjärrkonto har åtkomst till din server med det SSH-nyckelbaserade autentiseringssystemet. Det här steget kommer att låsa eller inaktivera den lösenordsbaserade inloggningen helt så det är avgörande att minst en användares rotbehörighet har åtkomst till servern via SSH-nyckeln.
Logga in på din fjärranslutna Ubuntu-server och skriv kommandot som visas nedan.
sudo vim /etc/ssh/sshd_config
- Tryck
Esc
,/
och skriv "PasswordAuthentication" och tryckstiga på
. - Tryck nu
i
och ändra värdet för "PasswordAuthentication yes" till "PasswordAuthentication no". - Tryck
Esc
och upprepa ovanstående process för att hitta 'ChallengeResponseAuthentication', 'UsePAM' och ändra deras värden tillNej
också.
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM-nr
När alla värden är inställda på Nej
, Tryck Esc
, typ :wq
och slå stiga på
.
För att aktivera alla ändringar starta om ssh
tjänst med kommandot nedan.
sudo systemctl starta om ssh
Öppna nu ett nytt terminalfönster på din dator och verifiera att din SSH-nyckelautentisering fungerar korrekt innan du stänger den aktuella sessionen.
När verifieringsprocessen är klar stänger du alla pågående sessioner.
Vi har nu framgångsrikt konfigurerat den SSH-nyckelbaserade autentiseringen på vår Ubuntu 20.04-server. Nu kan ingen logga in på din server med en lösenordsbaserad inloggningsmekanism.