Konfigurer et sikkert login uden adgangskode til din eksterne Ubuntu-server ved hjælp af SSH-nøgler
SSH er en sikker klient-server-netværksprotokol, som hjælper en klientcomputer med at oprette forbindelse og kommunikere til en fjernserver. SSH-forbindelse sikrer, at de kommandoer, der indtastes i terminalen, sendes til fjernserveren gennem en krypteret kanal.
Der er to typer godkendelsesmekanismer, der bruges til at oprette forbindelse til fjernserveren, adgangskodebaseret godkendelse (tilbøjelig til Brute-force-angreb) og SSH Keys-baseret godkendelse (som er meget sikker).
I den SSH-nøglebaserede godkendelse genereres et nøglepar på klientcomputeren, kaldet den offentlige nøgle og den private nøgle. En kopi af denne offentlige nøgle gøres tilgængelig på fjernserveren. Når en klient sender en forbindelsesanmodning til serveren, genererer serveren en tilfældig streng og krypterer den ved hjælp af den offentlige nøgle. Denne streng kan kun dekrypteres ved hjælp af den private nøgle, der er tilgængelig på klientcomputeren. Denne metode sikrer, at serveren kun kan tilgås af klienter, der indeholder den private nøgle.
I denne vejledning vil vi se, hvordan du opsætter SSH-nøgler på Ubuntu 20.04 LTS-serveren.
Se, om du har en eksisterende SSH-nøgle på din computer
For at kontrollere, om der allerede findes et SSH-nøglepar på din computer, skriv denne kommando i din terminal.
ls -l ~/.ssh/id_*.pub
Hvis ovenstående kommando vender tilbage ingen sådan fil eller mappe
eller Ingen match fundet
, så betyder det, at SSH-nøglepar ikke eksisterer.
Hvis du har et eksisterende SSH-nøglepar, kan du enten bruge det samme nøglepar til at få adgang til to fjernservere, eller du kan også oprette et andet nøglepar med et andet navn. Lad os gå videre til næste trin og se, hvordan man genererer SSH-nøgler til begge sager.
Oprettelse af SSH-nøgler på en klientcomputer
For at generere et nyt SSH-nøglepar på din computer, skriv kommandoen som vist nedenfor.
ssh-keygen
Som standard er SSH-nøglerne på 2048 bit. For bedre sikkerhed, hvis du vil generere SSH-nøgler med højere bit, skal du bruge følgende kommando.
ssh-keygen -b 4096
Hvis kommandoen kører med succes, vil følgende meddelelse blive vist på din skærm.
generere offentlig/privat rsa nøglepar. Indtast fil, hvor du vil gemme nøglen (/home/harshit/.ssh/id_rsa):
Hvis du nu ikke har noget eksisterende SSH-nøglepar på din computer, skal du blot trykke på Gå ind
, men hvis du har en eksisterende SSH-nøgle, så gem nøglen med et andet filnavn som vist nedenfor.
Indtast fil, hvor du vil gemme nøglen (/home/dit_navn/.ssh/id_rsa): /home/dit_navn/.ssh/id_rsa_xxx
Udskift xxx
i slutningen af filnavnet med et passende navn, som vist nedenfor, og tryk på Gå ind
.
Indtast fil, hvor du vil gemme nøglen (/home/dit_navn/.ssh/id_rsa): /home/dit_navn/.ssh/id_rsa_client_1
Den næste prompt vil bede dig om at indtaste en adgangssætning af en vilkårlig længde, det vil sikre to-niveau sikkerhed på din enhed.
Indtast adgangssætning (tom for ingen adgangssætning): Indtast samme adgangssætning igen:
Indtastning af denne adgangssætning vil sikre, at selvom en person får adgang til din private nøgle, så vil han ikke være i stand til at få adgang til din fjernserver uden denne adgangssætning.
Når hele processen er fuldført, vises følgende meddelelse på din skærm.
SSH-nøglerne er blevet genereret på dit system. Nu er det tid til at kopiere den offentlige nøgle på fjernserveren.
Kopiering af den offentlige nøgle til Remote Ubuntu Server
Den nemmeste og hurtigste metode til at kopiere den offentlige nøgle til fjernserveren er ved at bruge ssh-copy-id
nytte. Men hvis dette værktøj ikke er tilgængeligt på din maskine af en eller anden grund, kan du også bruge andre metoder, der er angivet i dette afsnit.
Bruger ssh-copy-id-værktøjet
Det ssh-copy-id
værktøjet er som standard tilgængeligt på din Ubuntu-maskine, som kopierer den offentlige nøgle fra din enhed til den relevante mappe på din eksterne Ubuntu-maskine.
For at kopiere den offentlige ssh-nøgle skal du blot skrive kommandoen i din terminal, som vist nedenfor.
ssh-copy-id brugernavn@værtsnavn
Udskift brugernavn
og værtsnavn
i ovenstående kommando med brugernavnet og værtsnavnet på din server.
Følgende meddelelse vises på din terminal, hvis du opretter forbindelse til din vært for første gang, skriv Ja
og tryk Gå ind
.
Ægtheden af vært' 172.105.XX.XX (172.105.XX.XX)' kan ikke fastslås. ECDSA-nøglefingeraftryk er xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Er du sikker på, at du vil fortsætte med at oprette forbindelse (ja/nej)? Ja
Nu ssh-copy-id
værktøjet vil scanne efter filen med navnet id_rsa.pub
som indeholder den offentlige SSH-nøgle. Når scanningsprocessen er fuldført, vil den bede dig om at indtaste adgangskoden til din fjernserver, som vist nedenfor. Indtast adgangskoden og tryk Gå ind
.
/usr/bin/ssh-copy-id: INFO: forsøger at logge ind med de nye nøgler, for at bortfiltrere enhver, der allerede er installeret /usr/bin/ssh-copy-id: INFO: 1 nøgle(r) ) mangler at blive installeret -- hvis du bliver bedt om nu, er det at installere de nye nøgler [email protected]'s adgangskode:
Når nøglen er tilføjet, vises følgende meddelelse på din terminal som output.
Antal tilføjede nøgle(r): 1 Prøv nu at logge ind på maskinen med: "ssh '[email protected]'" og tjek for at sikre, at kun den eller de nøgler, du ønskede, blev tilføjet.
Hvis du har flere SSH-nøgler på din klientcomputer, skal du for at kopiere den relevante offentlige nøgle til din fjerncomputer skrive kommandoen i mønsteret vist nedenfor.
ssh-copy-id -i id_rsa_xxx.pub brugernavn@vært
💡 Tip
Glem ikke at sætte .pub i slutningen af filnavnet, mens du skriver i terminalen.
Kopiering af den offentlige nøgle ved hjælp af pipe-metoden
Indtast følgende kommando i terminalen if ssh-copy-id
hjælpeprogrammet er ikke tilgængeligt. Denne kommando kan virke lidt længere, men den fungerer korrekt.
kat ~/.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"
Erstatte fjernbrugernavn
og server_ip_adresse
med dit brugernavn og IP-adresse.
Hvis du har flere tilgængelige SSH-nøgler på din computer, skal du udskifte den id_rsa.pub
med den offentlige SSH-nøglefil efter eget valg. For eksempel, id_rsa_client_1.pub
.
Indtast fjernbrugers adgangskode, når du bliver bedt om det, og tryk Gå ind
.
[email protected]'s adgangskode:
Når du har indtastet adgangskoden, vil den id_rsa.pub
filen vil blive kopieret til autoriserede_nøgler
fil på fjernserveren.
Manuel kopiering af den offentlige nøgle
Brug denne metode, når du ikke har adgang til dit fjernsystem via adgangskodegodkendelse.
Åbn id_rsa.pub
fil ved hjælp af kat
kommando i terminalen. Du kan også åbne den fra en teksteditor, formålet er blot at kopiere indholdet af filen.
kat ~/.ssh/id_rsa.pub
Indholdet af filen vil se ud som vist nedenfor.
ssh- rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name @ your_PC
Log nu ind på din fjernserver og indsæt det kopierede indhold ved hjælp af kommandoen vist nedenfor. Udskift ovenfor_streng
med det kopierede indhold.
echo above_string >> ~/.ssh/authorized_keys
Konfiguration af flere SSH-nøgler (valgfrit)
Dette trin er for personer, der har flere SSH-nøgler opsætning på deres klientcomputer. Spring dette afsnit over, hvis du kun har én SSH-nøgleopsætning.
For at administrere flere SSH-nøgler vil vi nu oprette en config
fil inde i .ssh
mappe ved hjælp af kommandoen vist nedenfor.
cd ~/.ssh vim config
Type jeg
for at gå i kommandotilstand og indtaste detaljerne for flere værter, som vist i følgende eksempel:
Host remote-ubuntu-server HostName 172.105.XX.XX Bruger root IdentityFile ~/.ssh/id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX Bruger root IdentityFile ~/.ssh/id_rsa_client_2
På samme måde skal du indtaste detaljerne for andre fjernservere og deres nøgler. Når processen er færdig, tryk på Esc
og :wq
for at gemme og afslutte.
Nu er de efterfølgende processer de samme for både at have en enkelt eller flere SSH-nøgler på klientcomputeren.
Log ind på din fjernserver ved hjælp af SSH-nøgler
Når processen med at kopiere din offentlige nøgle er fuldført, skal du logge ind på din fjernserver ved at skrive kommandoen som vist nedenfor.
ssh fjernbrugernavn@server_ip_adresse
Hvis du angav adgangssætningen, mens du genererede nøgleparret, bliver du bedt om at indtaste den. En ny session åbnes, når godkendelsesprocessen er fuldført.
Du har nu konfigureret den SSH-nøglebaserede godkendelse på din fjernserver. Men den adgangskodebaserede godkendelse er stadig aktiv på din server, det betyder, at din fjernserver stadig er tilbøjelig til brute-force-angreb.
Så nu vil vi deaktivere den adgangskodebaserede loginmekanisme helt fra vores fjernserver.
Deaktiver adgangskodebaseret login-mekanisme
Før du foretager nogen ændringer, skal du sørge for, at root-brugeren eller enhver sudo-aktiveret bruger for din fjernkonto har adgang til din server ved hjælp af det SSH-nøglebaserede godkendelsessystem. Dette trin vil låse eller deaktivere det adgangskodebaserede login fuldstændigt, så det er afgørende, at mindst én bruger root-privilegier har adgang til serveren via SSH-nøgle.
Log ind på din eksterne Ubuntu-server, og skriv kommandoen vist nedenfor.
sudo vim /etc/ssh/sshd_config
- Trykke
Esc
,/
og skriv 'PasswordAuthentication' og trykgå ind
. - Tryk nu på
jeg
og ændre værdien af 'PasswordAuthentication yes' til 'PasswordAuthentication no'. - Trykke
Esc
og gentag ovenstående proces for at finde 'ChallengeResponseAuthentication', 'UsePAM' og ændre deres værdier tilingen
såvel.
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
Når alle værdier er sat til ingen
, tryk Esc
, type :wq
og ramte gå ind
.
Genstart for at aktivere alle ændringerne ssh
service ved hjælp af kommandoen nedenfor.
sudo systemctl genstart ssh
Åbn nu et nyt terminalvindue på din computer, og bekræft, at din SSH-nøglegodkendelse fungerer korrekt, før du lukker den aktuelle session.
Når bekræftelsesprocessen er fuldført, skal du lukke alle de kørende sessioner.
Vi har nu konfigureret den SSH-nøglebaserede godkendelse på vores Ubuntu 20.04-server. Nu kan ingen logge ind på din server ved hjælp af en adgangskodebaseret loginmekanisme.