SSH-sleutels toevoegen aan Ubuntu 20.04

Stel een veilige wachtwoordloze login in op uw externe Ubuntu-server met behulp van SSH-sleutels

SSH is een beveiligd client-server-netwerkprotocol dat een clientcomputer helpt om verbinding te maken met en te communiceren met een externe server. SSH-verbinding zorgt ervoor dat de opdrachten die in de terminal worden ingetypt via een versleuteld kanaal naar de externe server worden gestuurd.

Er zijn twee soorten authenticatiemechanismen die worden gebruikt om verbinding te maken met de externe server, op wachtwoord gebaseerde authenticatie (gevoelig voor brute-force-aanvallen) en op SSH-sleutels gebaseerde authenticatie (wat erg veilig is).

Bij de op SSH-sleutel gebaseerde authenticatie wordt een sleutelpaar gegenereerd op de clientcomputer, de openbare sleutel en de privésleutel. Een kopie van deze openbare sleutel wordt beschikbaar gesteld op de externe server. Wanneer een client een verbindingsverzoek naar de server stuurt, genereert de server een willekeurige reeks en versleutelt deze met behulp van de openbare sleutel. Deze string kan alleen worden ontsleuteld met behulp van de persoonlijke sleutel die beschikbaar is op de clientcomputer. Deze methode zorgt ervoor dat de server alleen toegankelijk is voor clients die de persoonlijke sleutel bevatten.

In deze handleiding zullen we zien hoe u SSH-sleutels instelt op de Ubuntu 20.04 LTS-server.

Kijk of je een bestaande SSH-sleutel op je computer hebt

Om te controleren of er al een SSH Keypair op uw computer bestaat, typt u deze opdracht in uw terminal.

ls -l ~/.ssh/id_*.pub

Als het bovenstaande commando terugkeert Bestand of map bestaat niet of geen overeenkomsten gevonden, dan betekent dit dat het SSH-sleutelpaar niet bestaat.

Als je een bestaand SSH-sleutelpaar hebt, kun je hetzelfde sleutelpaar gebruiken om toegang te krijgen tot twee externe servers, of je kunt ook een ander sleutelpaar maken met een andere naam. Laten we verder gaan met de volgende stap en kijken hoe we SSH-sleutels voor beide gevallen kunnen genereren.

SSH-sleutels maken op een clientcomputer

Om een ​​nieuw SSH-sleutelpaar op uw computer te genereren, typt u de onderstaande opdracht.

ssh-keygen

Standaard zijn de SSH-sleutels van 2048 bit. Voor een betere beveiliging, als u SSH-sleutels met hogere bits wilt genereren, gebruik dan de volgende opdracht.

ssh-keygen -b 4096

Als de opdracht met succes wordt uitgevoerd, wordt het volgende bericht op uw scherm weergegeven.

genereren van publiek/privé rsa-sleutelpaar. Voer het bestand in waarin u de sleutel wilt opslaan (/home/harshit/.ssh/id_rsa):

Als u nu geen bestaand SSH-sleutelpaar op uw computer heeft, drukt u gewoon op Binnenkomen, maar als je een bestaande SSH-sleutel hebt, sla de sleutel dan op met een andere bestandsnaam zoals hieronder weergegeven.

Voer het bestand in waarin u de sleutel wilt opslaan (/home/uw_naam/.ssh/id_rsa): /home/uw_naam/.ssh/id_rsa_xxx

Vervang de xxx aan het einde van de bestandsnaam met een toepasselijke naam, zoals hieronder weergegeven en druk op Binnenkomen.

Voer het bestand in waarin u de sleutel wilt opslaan (/home/uw_naam/.ssh/id_rsa): /home/uw_naam/.ssh/id_rsa_client_1

De volgende prompt zal u vragen om een ​​wachtwoordzin van een willekeurige lengte in te voeren, het zorgt voor beveiliging op twee niveaus op uw apparaat.

Voer wachtwoordzin in (leeg voor geen wachtwoordzin): Voer dezelfde wachtwoordzin opnieuw in:

Als u deze wachtwoordzin invoert, zorgt u ervoor dat, zelfs als een persoon toegang krijgt tot uw privésleutel, hij geen toegang heeft tot uw externe server zonder deze wachtwoordzin.

Zodra het hele proces is voltooid, verschijnt het volgende bericht op uw scherm.

ssh-keygen -b 4096 Zodra het hele proces van het genereren van SSH-sleutels is voltooid, verschijnt het volgende bericht op uw scherm.

De SSH-sleutels zijn op uw systeem gegenereerd. Nu is het tijd om de openbare sleutel op de externe server te kopiëren.

De openbare sleutel kopiëren naar de externe Ubuntu-server

De gemakkelijkste en snelste methode om de openbare sleutel naar de externe server te kopiëren, is door de ssh-kopie-id nutsvoorziening. Maar als dit hulpprogramma om de een of andere reden niet beschikbaar is op uw computer, kunt u ook andere methoden gebruiken die in deze sectie worden beschreven.

Het hulpprogramma ssh-copy-id gebruiken

De ssh-kopie-id hulpprogramma is standaard beschikbaar op uw Ubuntu-machine die de openbare sleutel van uw apparaat naar de juiste map van uw externe Ubuntu-machine kopieert.

Om de openbare ssh-sleutel te kopiëren, typt u eenvoudig de opdracht in uw terminal, zoals hieronder wordt weergegeven.

ssh-copy-id gebruikersnaam@hostnaam

Vervang de gebruikersnaam en hostnaam in de bovenstaande opdracht met de gebruikersnaam en hostnaam van uw server.

Het volgende bericht verschijnt op uw terminal als u voor de eerste keer verbinding maakt met uw host, typ Ja en druk op Binnenkomen.

De authenticiteit van gastheer '172.105.XX.XX (172.105.XX.XX)' kan niet worden vastgesteld. De vingerafdruk van de ECDSA-sleutel is xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Weet u zeker dat u door wilt gaan met verbinden (ja/nee)? Ja

Nu de ssh-kopie-id hulpprogramma scant naar het bestand met de naam id_rsa.pub die de openbare SSH-sleutel bevat. Zodra het scanproces is voltooid, wordt u gevraagd om het wachtwoord van uw externe server in te voeren, zoals hieronder weergegeven. Typ het wachtwoord en druk op Binnenkomen.

/usr/bin/ssh-copy-id: INFO: probeert in te loggen met de nieuwe sleutel(s), om de reeds geïnstalleerde sleutel(s) eruit te filteren /usr/bin/ssh-copy-id: INFO: 1 sleutel(s) ) moeten nog worden geïnstalleerd -- als u nu wordt gevraagd, moet u de nieuwe sleutels [email protected]'s wachtwoord installeren:

Nadat de sleutel is toegevoegd, verschijnt het volgende bericht op uw terminal als uitvoer.

Aantal sleutel(s) toegevoegd: 1 Probeer nu in te loggen op de machine, met: "ssh '[email protected]'" en controleer of alleen de gewenste sleutel(s) zijn toegevoegd.

Als u meerdere SSH-sleutels op uw clientcomputer heeft, typt u de opdracht in het onderstaande patroon om de juiste openbare sleutel naar uw externe computer te kopiëren.

ssh-copy-id -i id_rsa_xxx.pub gebruikersnaam@host

Tip

Vergeet niet om .pub aan het einde van de bestandsnaam te plaatsen tijdens het typen in de terminal.

De openbare sleutel kopiëren via de piping-methode

Typ de volgende opdracht in de terminal als ssh-kopie-id hulpprogramma is niet beschikbaar. Dit commando lijkt misschien wat langer, maar het werkt naar behoren.

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"

Vervangen remote_gebruikersnaam en server IP adres met uw gebruikersnaam en IP-adres.

Als je meerdere SSH-sleutels op je computer hebt, vervang dan de id_rsa.pub met het openbare SSH-sleutelbestand van uw keuze. Bijvoorbeeld, id_rsa_client_1.pub.

Typ het wachtwoord voor de externe gebruiker wanneer daarom wordt gevraagd en druk op Binnenkomen.

[email protected]'s wachtwoord:

Nadat u het wachtwoord hebt getypt, wordt de id_rsa.pub bestand wordt gekopieerd naar de geautoriseerde_sleutels bestand van de externe server.

Handmatig de openbare sleutel kopiëren

Gebruik deze methode als u geen toegang hebt tot uw externe systeem via wachtwoordverificatie.

Open de id_rsa.pub bestand met de kat commando in de terminal. Je kunt het ook openen vanuit een teksteditor, het doel is alleen om de inhoud van het bestand te kopiëren.

kat ~/.ssh/id_rsa.pub

De inhoud van het bestand ziet er uit zoals hieronder weergegeven.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name @ your_PC

Log nu in op uw externe server en plak de gekopieerde inhoud met behulp van de onderstaande opdracht. Vervang de boven_string met de gekopieerde inhoud.

echo above_string >> ~/.ssh/authorized_keys

Meerdere SSH-sleutels configureren (optioneel)

Deze stap is bedoeld voor mensen die meerdere SSH-sleutels hebben ingesteld op hun clientcomputer. Sla deze sectie over als u slechts één SSH-sleutelconfiguratie heeft.

Om meerdere SSH-sleutels te beheren, maken we nu een configuratie bestand in de .ssh directory met behulp van de onderstaande opdracht.

cd ~/.ssh vim-configuratie

Type I om naar de opdrachtmodus te gaan en de details van meerdere hosts in te voeren, zoals in het volgende voorbeeld:

Host remote-ubuntu-server HostName 172.105.XX.XX Root gebruiker identiteitsbestand ~/.ssh/id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX Root gebruiker IdentityFile ~/.ssh/id_rsa_client_2

Typ op dezelfde manier de details van andere externe servers en hun sleutels. Zodra het proces is voltooid, drukt u op Esc en :wq om op te slaan en af ​​te sluiten.

Nu zijn de volgende processen hetzelfde voor zowel enkele als meerdere SSH-sleutels op de clientcomputer.

Log in op uw externe server met SSH-sleutels

Zodra het kopiëren van uw openbare sleutel is voltooid, logt u in op uw externe server door de onderstaande opdracht te typen.

ssh remote_gebruikersnaam@server_ip_address

Als u de wachtwoordzin hebt opgegeven tijdens het genereren van het sleutelpaar, wordt u gevraagd deze in te voeren. Er wordt een nieuwe sessie geopend nadat het authenticatieproces is voltooid.

U hebt nu met succes de op SSH-sleutels gebaseerde authenticatie geconfigureerd op uw externe server. Maar de op wachtwoord gebaseerde authenticatie is nog steeds actief op uw server, dit betekent dat uw externe server nog steeds vatbaar is voor brute-force-aanvallen.

Dus nu zullen we het op wachtwoord gebaseerde inlogmechanisme volledig uitschakelen vanaf onze externe server.

Op wachtwoord gebaseerd aanmeldingsmechanisme uitschakelen

Voordat u wijzigingen aanbrengt, moet u ervoor zorgen dat de rootgebruiker of een willekeurige sudo-gebruiker voor uw externe account toegang heeft tot uw server met behulp van het op SSH-sleutel gebaseerde authenticatiesysteem. Met deze stap wordt de op wachtwoord gebaseerde login volledig vergrendeld of uitgeschakeld, dus het is van cruciaal belang dat ten minste één gebruiker root-rechten toegang hebben tot de server via de SSH-sleutel.

Log in op uw externe Ubuntu-server en typ de onderstaande opdracht.

sudo vim /etc/ssh/sshd_config
  • druk op Esc, / en typ 'PasswordAuthentication' en druk op binnenkomen.
  • Druk nu op I en verander de waarde van ‘PasswordAuthentication yes’ in ‘PasswordAuthentication no’.
  • druk op Esc en herhaal het bovenstaande proces om 'ChallengeResponseAuthentication', 'UsePAM' te vinden en hun waarden te wijzigen in Nee ook.
WachtwoordAuthenticatie geen uitdagingResponseAuthenticatie geen gebruikPAM nee

Zodra alle waarden zijn ingesteld op Nee, druk op Esc, typ :wq en raak binnenkomen.

Om alle wijzigingen te activeren, herstart de ssh service met behulp van de onderstaande opdracht.

sudo systemctl herstart ssh

Open nu een nieuw terminalvenster op uw computer en controleer of uw SSH-sleutelverificatie correct werkt voordat u de huidige sessie sluit.

Zodra het verificatieproces is voltooid, sluit u alle actieve sessies.

We hebben nu met succes de op SSH-sleutel gebaseerde authenticatie geconfigureerd op onze Ubuntu 20.04-server. Nu kan niemand inloggen op uw server met behulp van een op wachtwoorden gebaseerd inlogmechanisme.