Sett opp en sikker passordfri pålogging til den eksterne Ubuntu-serveren ved hjelp av SSH-nøkler
SSH er en sikker klient-server nettverksprotokoll som hjelper en klientdatamaskin til å koble til og kommunisere med en ekstern server. SSH-tilkobling sikrer at kommandoene som skrives inn i terminalen sendes til den eksterne serveren gjennom en kryptert kanal.
Det er to typer autentiseringsmekanismer som brukes for å koble til den eksterne serveren, passordbasert autentisering (utsatt for Brute-force-angrep) og SSH Keys-basert autentisering (som er veldig sikker).
I den SSH-nøkkelbaserte autentiseringen genereres et nøkkelpar på klientdatamaskinen, kalt den offentlige nøkkelen og den private nøkkelen. En kopi av denne offentlige nøkkelen gjøres tilgjengelig på den eksterne serveren. Når en klient sender en tilkoblingsforespørsel til serveren, genererer serveren en tilfeldig streng og krypterer den ved hjelp av den offentlige nøkkelen. Denne strengen kan bare dekrypteres med den private nøkkelen som er tilgjengelig på klientdatamaskinen. Denne metoden sikrer at serveren kun kan nås av klienter som inneholder den private nøkkelen.
I denne veiledningen vil vi se hvordan du setter opp SSH-nøkler på Ubuntu 20.04 LTS-serveren.
Se om du har en eksisterende SSH-nøkkel på datamaskinen
For å sjekke om et SSH-nøkkelpar allerede eksisterer på datamaskinen, skriv inn denne kommandoen i terminalen.
ls -l ~/.ssh/id_*.pub
Hvis kommandoen ovenfor kommer tilbake ingen slik fil eller katalog
eller ingen treff funnet
, så betyr det at SSH-nøkkelparet ikke eksisterer.
Hvis du har et eksisterende SSH-nøkkelpar, kan du enten bruke det samme nøkkelparet for å få tilgang til to eksterne servere, eller du kan også opprette et annet nøkkelpar med et annet navn. La oss gå videre til neste trinn og se hvordan du genererer SSH-nøkler for begge tilfellene.
Opprette SSH-nøkler på en klientdatamaskin
For å generere et nytt SSH-nøkkelpar på datamaskinen din, skriv inn kommandoen som vist nedenfor.
ssh-keygen
Som standard er SSH-nøklene på 2048 bit. For bedre sikkerhet, hvis du vil generere SSH-nøkler med høyere biter, bruk følgende kommando.
ssh-keygen -b 4096
Hvis kommandoen kjører vellykket, vises følgende melding på skjermen.
generere offentlig/privat rsa nøkkelpar. Skriv inn filen for å lagre nøkkelen (/home/harshit/.ssh/id_rsa):
Hvis du ikke har noe eksisterende SSH-nøkkelpar på datamaskinen din, trykker du bare Tast inn
, men hvis du har en eksisterende SSH-nøkkel, lagrer du nøkkelen med et annet filnavn som vist nedenfor.
Skriv inn filen for å lagre nøkkelen (/home/ditt_navn/.ssh/id_rsa): /home/ditt_navn/.ssh/id_rsa_xxx
Bytt ut xxx
på slutten av filnavnet med et passende navn, som vist nedenfor, og trykk Tast inn
.
Skriv inn filen for å lagre nøkkelen (/home/ditt_navn/.ssh/id_rsa): /home/ditt_navn/.ssh/id_rsa_client_1
Den neste ledeteksten vil be deg om å angi en passordfrase av en vilkårlig lengde, det vil sikre to-nivå sikkerhet på enheten din.
Skriv inn passordfrase (tom for ingen passordfrase): Skriv inn samme passordfrase igjen:
Å skrive inn denne passordfrasen vil sikre at selv om en person får tilgang til din private nøkkel, så vil han ikke kunne få tilgang til den eksterne serveren din uten denne passordfrasen.
Når hele prosessen er fullført, vises følgende melding på skjermen.
SSH-nøklene er generert på systemet ditt. Nå er det på tide å kopiere den offentlige nøkkelen på den eksterne serveren.
Kopierer den offentlige nøkkelen til ekstern Ubuntu-server
Den enkleste og raskeste metoden for å kopiere den offentlige nøkkelen til den eksterne serveren er å bruke ssh-copy-id
nytte. Men hvis dette verktøyet av en eller annen grunn ikke er tilgjengelig på maskinen din, kan du også bruke andre metoder i denne delen.
Bruker ssh-copy-id-verktøyet
De ssh-copy-id
verktøyet er som standard tilgjengelig på Ubuntu-maskinen din, som kopierer den offentlige nøkkelen fra enheten til den aktuelle katalogen til den eksterne Ubuntu-maskinen.
For å kopiere den offentlige ssh-nøkkelen, skriv ganske enkelt kommandoen i terminalen din, som vist nedenfor.
ssh-copy-id brukernavn@vertsnavn
Bytt ut brukernavn
og vertsnavn
i kommandoen ovenfor med brukernavnet og vertsnavnet til serveren din.
Følgende melding vil vises på terminalen din hvis du kobler til verten for første gang, skriv ja
og trykk Tast inn
.
Ektheten til vert' 172.105.XX.XX (172.105.XX.XX)' kan ikke fastslås. ECDSA-nøkkelfingeravtrykket er xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Er du sikker på at du vil fortsette å koble til (ja/nei)? ja
Nå ssh-copy-id
verktøyet vil skanne etter filen med navnet id_rsa.pub
som inneholder den offentlige SSH-nøkkelen. Når skanningsprosessen er fullført, vil den be deg om å skrive inn passordet til den eksterne serveren, som vist nedenfor. Skriv inn passordet og trykk Tast inn
.
/usr/bin/ssh-copy-id: INFO: prøver å logge på med den nye nøkkelen(e), for å filtrere ut alle som allerede er installert /usr/bin/ssh-copy-id: INFO: 1 nøkkel(er) ) gjenstår å installere -- hvis du blir bedt om nå, er det å installere de nye nøklene [email protected] sitt passord:
Når nøkkelen er lagt til, vil følgende melding vises på terminalen som utdata.
Antall nøkler som er lagt til: 1 Prøv nå å logge på maskinen, med: "ssh '[email protected]'" og kontroller at bare nøkkelen(e) du ønsket ble lagt til.
Hvis du har flere SSH-nøkler på klientdatamaskinen, for å kopiere den aktuelle offentlige nøkkelen til den eksterne datamaskinen, skriv inn kommandoen i mønsteret vist nedenfor.
ssh-copy-id -i id_rsa_xxx.pub brukernavn@vert
💡 Tips
Ikke glem å sette .pub på slutten av filnavnet mens du skriver inn terminalen.
Kopiering av den offentlige nøkkelen ved hjelp av pipemetoden
Skriv inn følgende kommando i terminalen if ssh-copy-id
verktøyet er ikke tilgjengelig. Denne kommandoen kan virke litt lengre, men den fungerer riktig.
katt ~/.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 eksternt_brukernavn
og server_ip_adresse
med brukernavn og IP-adresse.
Hvis du har flere SSH-nøkler tilgjengelig på datamaskinen din, bytt ut id_rsa.pub
med den offentlige SSH-nøkkelfilen du velger. For eksempel, id_rsa_client_1.pub
.
Skriv inn det eksterne brukerpassordet når du blir bedt om det, og trykk Tast inn
.
[email protected] sitt passord:
Når du har skrevet inn passordet, vil id_rsa.pub
filen vil bli kopiert til autoriserte_nøkler
filen til den eksterne serveren.
Manuell kopiering av den offentlige nøkkelen
Bruk denne metoden når du ikke har tilgang til det eksterne systemet via passordautentisering.
Åpne id_rsa.pub
fil ved hjelp av katt
kommando i terminalen. Du kan også åpne den fra et tekstredigeringsprogram, hensikten er bare å kopiere innholdet i filen.
katt ~/.ssh/id_rsa.pub
Innholdet i filen vil se ut som vist nedenfor.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH ditt_navn @ your_PC
Logg inn på den eksterne serveren din og lim inn det kopierte innholdet ved å bruke kommandoen vist nedenfor. Bytt ut ovenfor_streng
med det kopierte innholdet.
echo above_string >> ~/.ssh/authorized_keys
Konfigurere flere SSH-nøkler (valgfritt)
Dette trinnet er for personer som har flere SSH-nøkler oppsett på klientdatamaskinen. Hopp over denne delen hvis du bare har ett SSH-nøkkeloppsett.
For å administrere flere SSH-nøkler, vil vi nå opprette en konfig
fil inne i .ssh
katalog ved hjelp av kommandoen vist nedenfor.
cd ~/.ssh vim config
Type Jeg
for å gå inn i kommandomodus og skrive inn detaljene til flere verter, som vist i følgende eksempel:
Verts ekstern-ubuntu-server Vertsnavn 172.105.XX.XX Brukerrot IdentityFile ~/.ssh/id_rsa_client_1 Verts ekstern-ubuntu-server Vertsnavn 172.106.XX.XX Brukerrot IdentityFile ~/.ssh/id_rsa_client_2
På samme måte skriver du inn detaljene til andre eksterne servere og nøklene deres. Når prosessen er fullført, trykk Esc
og :wq
for å lagre og avslutte.
Nå er de påfølgende prosessene de samme for begge å ha enkelt eller flere SSH-nøkler på klientdatamaskinen.
Logg på den eksterne serveren din med SSH-nøkler
Når prosessen med å kopiere den offentlige nøkkelen er fullført, logger du på den eksterne serveren din ved å skrive kommandoen som vist nedenfor.
ssh eksternt_brukernavn@server_ip_adresse
Hvis du oppga passordfrasen mens du genererte nøkkelparet, vil du bli bedt om å angi den. En ny økt åpnes etter at autentiseringsprosessen er fullført.
Du har nå konfigurert den SSH-nøkkelbaserte autentiseringen på den eksterne serveren. Men den passordbaserte autentiseringen er fortsatt aktiv på serveren din, dette betyr at den eksterne serveren fortsatt er utsatt for brute-force-angrep.
Så nå vil vi deaktivere den passordbaserte påloggingsmekanismen helt fra vår eksterne server.
Deaktiver passordbasert påloggingsmekanisme
Før du gjør noen endringer, sørg for at root-brukeren eller en hvilken som helst sudo-aktivert bruker for den eksterne kontoen din har tilgang til serveren din ved å bruke det SSH-nøkkelbaserte autentiseringssystemet. Dette trinnet vil låse eller deaktivere den passordbaserte påloggingen fullstendig, så det er avgjørende at minst én brukerrotrettigheter har tilgang til serveren gjennom SSH-nøkkelen.
Logg på din eksterne Ubuntu-server og skriv inn kommandoen vist nedenfor.
sudo vim /etc/ssh/sshd_config
- trykk
Esc
,/
og skriv "PasswordAuthentication" og trykkTast inn
. - Trykk nå
Jeg
og endre verdien av 'PasswordAuthentication yes' til 'PasswordAuthentication no'. - trykk
Esc
og gjenta prosessen ovenfor for å finne "ChallengeResponseAuthentication", "UsePAM", og endre verdiene deres tilNei
også.
Passordautentisering ingen ChallengeResponseAutentisering ingen brukPAM-nr
Når alle verdiene er satt til Nei
, trykk Esc
, type :wq
og treffer Tast inn
.
For å aktivere alle endringene, start på nytt ssh
tjeneste ved å bruke kommandoen nedenfor.
sudo systemctl start ssh på nytt
Åpne nå et nytt terminalvindu på datamaskinen og kontroller at SSH-nøkkelautentiseringen din fungerer som den skal før du lukker gjeldende økt.
Når bekreftelsesprosessen er fullført, lukk alle løpende økter.
Vi har nå konfigurert den SSH-nøkkelbaserte autentiseringen på Ubuntu 20.04-serveren vår. Nå kan ingen logge på serveren din ved hjelp av en passordbasert påloggingsmekanisme.