Introductie
SSH, of secure shell, is een versleuteld protocol dat wordt gebruikt om servers te beheren en ermee te communiceren. Wanneer je werkt met een Debian-server, is de kans groot dat je het grootste deel van je tijd doorbrengt in een terminalsessie die via SSH met je server is verbonden.
In deze handleiding zullen we ons richten op het instellen van SSH-sleutels voor een standaard Debian 11-installatie. SSH-sleutels bieden een eenvoudige, veilige manier om in te loggen op je server en worden aanbevolen voor alle gebruikers.
Stap 1 — Maak het RSA-sleutelpaar aan
De eerste stap is om een sleutelpaar aan te maken op de clientmachine (meestal je computer):
Standaard zal ssh-keygen
een RSA-sleutelpaar van 3072 bits aanmaken, wat veilig genoeg is voor de meeste gebruiksscenario’s (optioneel kun je de -b 4096
-vlag doorgeven om een grotere sleutel van 4096 bits aan te maken).
Na het invoeren van het commando zou je de volgende uitvoer moeten zien:
OutputGenerating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):
Druk op enter om het sleutelpaar op te slaan in de .ssh/
subdirectory in je thuismap, of geef een alternatief pad op.
Als je eerder een SSH-sleutelpaar hebt gegenereerd, zie je mogelijk de volgende prompt:
Output/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?
Waarschuwing: Als u ervoor kiest om de sleutel op de schijf te overschrijven, kunt u niet meer authenticeren met de vorige sleutel. Wees zeer voorzichtig bij het selecteren van ja, aangezien dit een destructief proces is dat niet kan worden teruggedraaid.
U zou dan het volgende prompt moeten zien:
OutputEnter passphrase (empty for no passphrase):
Hier kunt u optioneel een veilige wachtzin invoeren, wat ten zeerste wordt aanbevolen. Een wachtzin voegt een extra beveiligingslaag toe om te voorkomen dat onbevoegde gebruikers kunnen inloggen. Voor meer informatie over beveiliging kunt u onze tutorial over Hoe SSH-sleutelgebaseerde authenticatie configureren op een Linux-server raadplegen.
U zou dan de volgende uitvoer moeten zien:
OutputYour identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:5E2BtTN9FHPBNoRXAB/EdjtHNYOHzTBzG5qUv7S3hyM root@debian-suricata
The key's randomart image is:
+---[RSA 3072]----+
| oo .O^XB|
| . +.BO%B|
| . = .+B+o|
| o o o . =.|
| S . . =|
| o.|
| .o|
| E o..|
| . ..|
+----[SHA256]-----+
U heeft nu een openbare en private sleutel die u kunt gebruiken voor authenticatie. De volgende stap is om de openbare sleutel op uw server te plaatsen, zodat u SSH-sleutelgebaseerde authenticatie kunt gebruiken om in te loggen.
Stap 2 — Kopieer de openbare sleutel naar de Debian-server
De snelste manier om uw openbare sleutel naar de Debian-host te kopiëren, is door een hulpprogramma genaamd ssh-copy-id
te gebruiken. Vanwege de eenvoud wordt deze methode ten zeerste aanbevolen als deze beschikbaar is. Als u geen ssh-copy-id
beschikbaar heeft op uw clientmachine, kunt u een van de twee alternatieve methoden gebruiken die in dit gedeelte worden verstrekt (kopiëren via SSH op basis van wachtwoord of handmatig kopiëren van de sleutel).
Kopiëren van Openbare Sleutel met ssh-copy-id
De ssh-copy-id
tool is standaard inbegrepen in veel besturingssystemen, dus het is mogelijk dat u deze beschikbaar heeft op uw lokale systeem. Voor deze methode om te werken, moet u al SSH-toegang hebben met wachtwoord tot uw server.
Om de tool te gebruiken, hoeft u alleen maar de externe host op te geven waarmee u verbinding wilt maken en het gebruikersaccount waarvoor u SSH-toegang met wachtwoord heeft. Dit is het account waarnaar uw openbare SSH-sleutel zal worden gekopieerd.
De syntaxis is:
U kunt het volgende bericht zien:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Dit betekent dat uw lokale computer de externe host niet herkent. Dit gebeurt de eerste keer dat u verbinding maakt met een nieuwe host. Typ “ja” en druk op ENTER
om door te gaan.
Vervolgens zal het hulpprogramma uw lokale account scannen op de id_rsa.pub
-sleutel die we eerder hebben aangemaakt. Wanneer het de sleutel vindt, zal het u vragen om het wachtwoord van het account van de externe gebruiker in te voeren:
Output/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@203.0.113.1's password:
Typ het wachtwoord in (uw typen wordt niet weergegeven om veiligheidsredenen) en druk op ENTER
. Het hulpprogramma zal verbinding maken met het account op de externe host met het door u opgegeven wachtwoord. Vervolgens zal het de inhoud van uw ~/.ssh/id_rsa.pub
-sleutel kopiëren naar een bestand in de thuismap van het externe account ~/.ssh
genaamd authorized_keys
.
U zou de volgende uitvoer moeten zien:
OutputNumber of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.
Op dit punt is je id_rsa.pub
-sleutel geüpload naar de externe account. Je kunt doorgaan naar Stap 3.
Openbare sleutel kopiëren met SSH
Als je geen toegang hebt tot ssh-copy-id
, maar wel SSH-toegang op basis van wachtwoord hebt tot een account op je server, kun je je sleutels uploaden met een conventionele SSH-methode.
Dit kunnen we doen door de cat
-opdracht te gebruiken om de inhoud van de openbare SSH-sleutel op onze lokale computer te lezen en dat via een SSH-verbinding naar de externe server te leiden.
Aan de andere kant kunnen we ervoor zorgen dat de ~/.ssh
-directory bestaat en de juiste machtigingen heeft onder het account dat we gebruiken.
Vervolgens kunnen we de inhoud die we hebben doorgestuurd, uitvoeren naar een bestand genaamd authorized_keys
binnen deze directory. We zullen het >>
doorstuursymbool gebruiken om de inhoud toe te voegen zonder deze te overschrijven. Hiermee kunnen we sleutels toevoegen zonder eerder toegevoegde sleutels te vernietigen.
De volledige opdracht ziet er zo uit:
Je ziet mogelijk het volgende bericht:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Dit betekent dat je lokale computer de externe host niet herkent. Dit gebeurt de eerste keer dat je verbinding maakt met een nieuwe host. Typ “yes” en druk op ENTER
om door te gaan.
Na afloop wordt u gevraagd het wachtwoord van het externe gebruikersaccount in te voeren:
Outputusername@203.0.113.1's password:
Na het invoeren van uw wachtwoord wordt de inhoud van uw id_rsa.pub
-sleutel gekopieerd naar het einde van het bestand authorized_keys
van het externe gebruikersaccount. Ga verder naar Stap 3 als dit succesvol was.
Openbare Sleutel Handmatig Kopiëren
Als u geen toegang heeft tot uw server via SSH met wachtwoord, moet u het bovenstaande proces handmatig voltooien.
We zullen handmatig de inhoud van uw id_rsa.pub
-bestand toevoegen aan het bestand ~/.ssh/authorized_keys
op uw externe machine.
Om de inhoud van uw id_rsa.pub
-sleutel weer te geven, typt u dit op uw lokale computer:
U ziet de inhoud van de sleutel, die er ongeveer zo uit zou moeten zien:
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDgkLJ8d2gGEJCN7xdyVaDqk8qgeZqQ0MlfoPK3TzWI5dkG0WiZ16jrkiW/h6lhO9K1w89VDMnmNN9ULOWHrZMNs//Qyv/oN+FLIgK2CkKXRxTmbh/ZGnqOm3Zo2eU+QAmjb8hSsstQ3DiuGu8tbiWmsa3k3jKbWNWpXqY3Q88t+bM1DZrHwYzaIZ1BSA1ghqHCvIZqeP9IUL2l2DUfSCT9LXJEgMQhgjakJnzEGPgd5VHMR32rVrbIbbDzlyyoZ7SpCe5y0vYvbV2JKWI/8SEOmwehEHJ9RBZmciwc+1sdEcAJVMDujb9p5rX4hyvFpG0KGhZesB+/s7PdOa8zlIg4TZhXUHl4t1jpPC83Y9KEwS/Ni4dhaxlnr3T6l5hUX2cD+eWl1vVpogBqKNGBMrVR4dWs3Z4BVUf9exqTRRYOfgo0UckULqW5pmLW07JUuGo1kpFAxpDBPFWoPsg08CGRdEUS7ScRnMK1KdcH54kUZr0O88SZOsv9Zily/A5GyNM= demo@test
Maak verbinding met uw externe host via de beschikbare methode.
Zodra u toegang heeft tot uw account op de externe server, moet u controleren of de map ~/.ssh
bestaat. Met dit commando wordt de map aangemaakt indien nodig, of gebeurt er niets als deze al bestaat:
Nu kunt u het bestand authorized_keys
maken of wijzigen binnen deze directory. U kunt de inhoud van uw bestand id_rsa.pub
toevoegen aan het einde van het bestand authorized_keys
, het maken indien nodig, met behulp van deze opdracht:
In de bovenstaande opdracht, vervang de public_key_string
met de output van de opdracht cat ~/.ssh/id_rsa.pub
die u heeft uitgevoerd op uw lokale systeem. Het moet beginnen met ssh-rsa AAAA...
.
Tenslotte zullen we ervoor zorgen dat de directory ~/.ssh
en het bestand authorized_keys
de juiste machtigingen hebben ingesteld:
Dit verwijdert recursief alle “groep” en “anderen” machtigingen voor de directory ~/.ssh/
.
Als u het root
-account gebruikt om sleutels in te stellen voor een gebruikersaccount, is het ook belangrijk dat de directory ~/.ssh
toebehoort aan de gebruiker en niet aan root
:
In deze handleiding is onze gebruiker genaamd sammy maar u moet de juiste gebruikersnaam in de bovenstaande opdracht vervangen.
U kunt nu proberen om met uw Debian-server in te loggen zonder wachtwoord.
Stap 3 — Authenticeer naar Debian-server met behulp van SSH-sleutels
Als je een van de bovenstaande procedures succesvol hebt voltooid, moet je kunnen inloggen op de externe host zonder het wachtwoord van het externe account.
Het algemene proces is hetzelfde:
Als dit de eerste keer is dat je verbinding maakt met deze host (als je de laatste methode hierboven hebt gebruikt), zie je mogelijk iets als dit:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Dit betekent dat je lokale computer de externe host niet herkent. Typ “ja” en druk vervolgens op ENTER
om door te gaan.
Als je geen wachtwoord hebt opgegeven voor je privésleutel, word je direct ingelogd. Als je wel een wachtwoord hebt opgegeven voor de privésleutel toen je de sleutel maakte, word je nu gevraagd om het in te voeren (let op dat je toetsaanslagen niet worden weergegeven in de terminalsessie voor beveiliging). Na authenticatie zou er een nieuwe shellsessie voor je moeten worden geopend met het geconfigureerde account op de Debian-server.
Als key-gebaseerde authenticatie succesvol was, ga dan verder om te leren hoe je je systeem verder kunt beveiligen door wachtwoordauthenticatie uit te schakelen.
Stap 4 — Schakel Wachtwoordauthenticatie uit op je Server
Als je in staat was om in te loggen op je account met SSH zonder een wachtwoord, heb je SSH-sleutelgebaseerde authenticatie met succes geconfigureerd voor je account. Echter, je wachtwoordgebaseerde authenticatiemechanisme is nog steeds actief, wat betekent dat je server nog steeds blootgesteld is aan brute-force aanvallen.
Voor het voltooien van de stappen in deze sectie, zorg ervoor dat je ofwel SSH-sleutelgebaseerde authenticatie geconfigureerd hebt voor het rootaccount op deze server, of bij voorkeur, dat je SSH-sleutelgebaseerde authenticatie geconfigureerd hebt voor een niet-rootaccount op deze server met sudo
-privileges. Deze stap zal inloggen op basis van wachtwoorden uitschakelen, dus het is cruciaal om ervoor te zorgen dat je nog steeds administratieve toegang kunt krijgen.
Zodra je hebt bevestigd dat je externe account administratieve privileges heeft, log je in op je externe server met SSH-sleutels, ofwel als root of met een account met sudo
-privileges. Open vervolgens het configuratiebestand van de SSH-daemon:
In het bestand zoek je naar een richtlijn genaamd PasswordAuthentication
. Dit kan zijn uitgecommentarieerd. Verwijder het commentaarteken en stel de waarde in op “no”. Hiermee wordt je vermogen om in te loggen via SSH met accountwachtwoorden uitgeschakeld:
...
PasswordAuthentication no
...
Sla het bestand op en sluit het af wanneer je klaar bent door op CTRL
+ X
te drukken, dan Y
om het bestand op te slaan te bevestigen, en tot slot ENTER
om nano te verlaten. Om deze wijzigingen daadwerkelijk door te voeren, moeten we de sshd
-service herstarten:
Als voorzorgsmaatregel, open een nieuw terminalvenster en test dat de SSH-service correct werkt voordat je deze sessie afsluit:
Zodra je je SSH-service hebt geverifieerd, kun je veilig alle huidige server-sessies sluiten.
De SSH-daemon op je Debian-server reageert nu alleen op SSH-sleutels. Authenticatie op basis van wachtwoorden is succesvol uitgeschakeld.
Conclusie
Je zou nu SSH-sleutelgebaseerde authenticatie geconfigureerd moeten hebben op je server, waardoor je kunt inloggen zonder een accountwachtwoord op te geven.
Als je meer wilt weten over het werken met SSH, bekijk dan onze SSH Essentials Gids.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-debian-11