Hvordan legge til SSH-nøkler på Ubuntu 20.04

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-keygen -b 4096 Når hele prosessen SSH-nøkkelgenerering 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

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 trykk Tast 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 til Nei 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.