SSH-Key op Linux

Introductie:

SSH, of beveiligde shell, is een gecodeerd protocol dat wordt gebruikt voor het beheren en communiceren met servers. Wanneer u met een linux-server werkt, is de kans groot dat u het grootste deel van uw tijd zult doorbrengen in een terminalsessie die via SSH met uw server is verbonden.

In deze gids zullen we ons concentreren op het instellen van SSH-sleutels voor een linux installatie. SSH-sleutels bieden een eenvoudige, veilige manier om in te loggen op uw server en worden aanbevolen voor alle gebruikers.

Step 1 — Maak het RSA-sleutelpaar

De eerste stap is het maken van een sleutelpaar op de clientcomputer (meestal uw computer):

  • ssh-keygen
Ssh-keygen maakt standaard een 2048-bit RSA-sleutelpaar, dat voldoende beveiligd is voor de meeste gevallen (u kunt de vlag -b 4096 eventueel gebruiken om een ​​grotere 4096-bit-sleutel te maken).

Nadat u de opdracht hebt ingevoerd, ziet u de volgende prompt:
Output
Generating 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 / submap in uw thuismap of geef een alternatief pad op.

Als u eerder een SSH-sleutelpaar had gegenereerd, ziet u mogelijk de volgende prompt:
Output
/home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?

Als u ervoor kiest de sleutel op schijf te overschrijven, kunt u zich niet meer met de vorige sleutel authenticeren. Wees heel voorzichtig bij het selecteren van ja, omdat dit een destructief proces is dat niet ongedaan gemaakt kan worden.

U zou dan de volgende prompt moeten zien:
Output
Enter passphrase (empty for no passphrase):
Hier kunt u optioneel een beveiligde wachtwoordzin invoeren, die ten zeerste wordt aanbevolen. Een wachtwoordzin voegt een extra beveiligingslaag toe om te voorkomen dat onbevoegde gebruikers inloggen.

U zou dan de volgende uitvoer moeten zien:
Output
Your 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: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

U hebt nu een openbare en persoonlijke sleutel die u kunt gebruiken om te verifiëren. De volgende stap is om de openbare sleutel op uw server te plaatsen, zodat u SSH-key-gebaseerde authenticatie kunt gebruiken om in te loggen.

Step 2 — Kopieer de openbare sleutel naar de server

De snelste manier om uw openbare sleutel naar de host te kopiëren, is door een hulpprogramma genaamd ssh-copy-id te gebruiken. Vanwege de eenvoud wordt deze methode sterk aanbevolen, indien beschikbaar. Als u geen ssh-copy-id voor u beschikbaar hebt op uw clientcomputer, kunt u een van de twee alternatieve methoden gebruiken die in deze sectie worden geboden (kopiëren met wachtwoordgestuurde SSH of handmatig kopiëren van de sleutel).

Uw openbare sleutel kopiëren met behulp van ssh-copy-id

De ssh-copy-id tool wordt standaard meegeleverd in veel besturingssystemen, dus je hebt deze mogelijk beschikbaar op je lokale systeem. Om deze methode te laten werken, moet je al SSH-toegang op basis van een wachtwoord hebben voor je server.

Als u het hulpprogramma wilt gebruiken, hoeft u alleen de externe host op te geven waarmee u verbinding wilt maken en de gebruikersaccount waartoe u toegang hebt via een SSH-wachtwoord. Dit is het account waarnaar uw openbare SSH-sleutel zal worden gekopieerd.

De syntaxis is:
  • ssh-copy-id username@remote_host

Mogelijk ziet u het volgende bericht:

Output
The 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 alleen dat uw lokale computer de externe host niet herkent. Dit gebeurt de eerste keer dat u verbinding maakt met een nieuwe host. Type "ja" en druk op ENTER om verder te gaan.

Vervolgens zal het hulpprogramma uw lokale account scannen op de id_rsa.pub-sleutel die we eerder hebben gemaakt. Wanneer de sleutel wordt gevonden, wordt u gevraagd om het wachtwoord van het account van de externe gebruiker:
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:
Voer het wachtwoord in (uw type wordt niet weergegeven voor veiligheidsdoeleinden) en druk op ENTER. Het hulpprogramma maakt verbinding met het account op de externe host met behulp van het wachtwoord dat u hebt opgegeven. Het zal dan de inhoud van je ~ / .ssh / id_rsa.pub-sleutel kopiëren naar een bestand in de home ~ / .ssh map van de externe account, genaamd authorized_keys.

Je zou de volgende output moeten zien:
Output
Number 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 uw id_rsa.pub-sleutel geüpload naar het externe account. Je kunt doorgaan naar stap 3.

Openbare sleutel kopiëren met behulp van SSH

Als u geen SSH-kopie-ID beschikbaar hebt, maar u hebt wachtwoordgebaseerde SSH-toegang tot een account op uw server, kunt u uw sleutels uploaden met behulp van een conventionele SSH-methode.

We kunnen dit doen door het commando cat 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 pipen.

Aan de andere kant kunnen we ervoor zorgen dat de map ~ / .ssh bestaat en de juiste machtigingen heeft onder het account dat we gebruiken.

Vervolgens kunnen we de inhoud die we hebben overgebracht naar een bestand met de naam authorized_keys in deze map uitvoeren. We zullen het >> redirect-symbool gebruiken om de inhoud toe te voegen in plaats van te overschrijven. Hiermee kunnen we sleutels toevoegen zonder eerder toegevoegde sleutels te vernietigen.

Het volledige commando ziet er als volgt uit:

  • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Mogelijk ziet u het volgende bericht:

Output
The 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. Type "ja" en druk op ENTER om verder te gaan.

Hierna moet u worden gevraagd om het wachtwoord voor de externe gebruikersaccount in te voeren:

Output
username@203.0.113.1's password:

Nadat u uw wachtwoord hebt ingevoerd, wordt de inhoud van uw id_rsa.pub-sleutel gekopieerd naar het einde van het bestand authorized_keys van de account van de externe gebruiker. Ga verder met stap 3 als dit succesvol was.

Openbare sleutel handmatig kopiëren

Als u geen wachtwoordgebaseerde SSH-toegang tot uw server beschikbaar hebt, moet u het bovenstaande proces handmatig voltooien.

We zullen de inhoud van uw id_rsa.pub-bestand handmatig toevoegen aan het bestand ~ / .ssh / authorized_keys op uw externe computer.

Om de inhoud van uw id_rsa.pub-sleutel weer te geven, typt u dit in uw lokale computer:

  • cat ~/.ssh/id_rsa.pub

U zult de inhoud van de sleutel zien, die er ongeveer zo zou moeten uitzien:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

Toegang tot uw externe host met behulp van welke methode u beschikbaar hebt.

Zodra u toegang hebt tot uw account op de externe server, moet u ervoor zorgen dat de directory ~ / .ssh bestaat. Deze opdracht maakt de map indien nodig of doet niets als deze al bestaat:

  • mkdir -p ~/.ssh

U kunt nu het bestand authorized_keys in deze map maken of wijzigen. U kunt de inhoud van uw id_rsa.pub-bestand toevoegen aan het einde van het bestand authorized_keys, indien nodig maken met behulp van deze opdracht:

  • echo public_key_string >> ~/.ssh/authorized_keys

Vervang in de bovenstaande opdracht de public_key_string door de uitvoer van de opdracht cat ~ / .ssh / id_rsa.pub die u op uw lokale systeem hebt uitgevoerd. Het zou moeten beginnen met ssh-rsa AAAA ....

Ten slotte zorgen we ervoor dat de directory ~ / .ssh en authorized_keys de juiste machtigingen hebben:

  • chmod -R go= ~/.ssh

Dit verwijdert recursief alle "groep" en "andere" permissies voor de ~ / .ssh / map.

Als u het root-account gebruikt om sleutels in te stellen voor een gebruikersaccount, is het ook belangrijk dat de directory ~ / .ssh van de gebruiker is en niet root:

  • chown -R sammy:sammy ~/.ssh

In deze tutorial wordt onze gebruiker sammy genoemd, maar u moet de juiste gebruikersnaam vervangen door de bovenstaande opdracht.

We kunnen nu proberen een wachtwoordloze authenticatie uit te voeren met onze Ubuntu-server.

Step 3 — Verifiëren naar uw Server SSH-sleutels gebruiken

Als u met succes een van de bovenstaande procedures hebt voltooid, kunt u zich bij de externe host aanmelden zonder het wachtwoord van de externe account.

Het basisproces is hetzelfde:

  • ssh username@remote_host

Als dit de eerste keer is dat u verbinding maakt met deze host (als u de laatste methode hierboven hebt gebruikt), ziet u mogelijk iets als dit:

Output
The 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. Typ "ja" en druk vervolgens op ENTER om verder te gaan.

Als u geen wachtwoordzin hebt opgegeven voor uw privésleutel, wordt u onmiddellijk aangemeld. Als u een wachtwoordzin voor de privésleutel hebt opgegeven toen u deze hebt gemaakt, wordt u nu gevraagd om de wachtwoordzin in te voeren. Na verificatie moet een nieuwe shellsessie voor u worden geopend met het geconfigureerde account op de Server.

Als op sleutels gebaseerde verificatie succesvol was, kunt u doorgaan met leren hoe u uw systeem verder kunt beveiligen door wachtwoordverificatie uit te schakelen.

Step 4 — Schakel wachtwoordverificatie op uw server uit

Als u zich zonder wachtwoord op uw account kunt aanmelden met SSH, hebt u met succes SSH-sleutelgestuurde authenticatie geconfigureerd voor uw account. Uw op wachtwoord gebaseerde verificatiemechanisme is echter nog steeds actief, wat betekent dat uw server nog steeds wordt blootgesteld aan aanvallen met brute kracht.

Voordat u de stappen in dit gedeelte uitvoert, moet u ervoor zorgen dat SSH-sleutelgebaseerde authenticatie is geconfigureerd voor het root-account op deze server, of bij voorkeur dat u op SSH-key gebaseerde authenticatie hebt geconfigureerd voor een niet-rootaccount op deze server server met sudo-privileges. Met deze stap worden aanmeldingen op basis van wachtwoord geblokkeerd, zodat u zeker weet dat u nog steeds beheerderstoegang krijgt.

Zodra u hebt bevestigd dat uw externe account beheerdersrechten heeft, meldt u zich aan op uw externe server met SSH-sleutels, als root of met een account met sudo-privileges. Open vervolgens het configuratiebestand van de SSH-daemon:

  • sudo vi /etc/ssh/sshd_config

Zoek in het bestand naar een richtlijn met de naam PasswordAuthentication. Dit kan worden becommentarieerd. Druk op i om tekst in te voegen en spreek vervolgens de regel af en stel de waarde in op "nee". Hiermee wordt uw mogelijkheid om in te loggen via SSH met accountwachtwoorden uitgeschakeld:

/etc/ssh/sshd_config
...
PasswordAuthentication no
...

Wanneer u klaar bent met het aanbrengen van wijzigingen, drukt u op ESC en vervolgens: wq om de wijzigingen in het bestand te schrijven en af ​​te sluiten. Om deze wijzigingen daadwerkelijk te implementeren, moeten we de sshd-service opnieuw starten:

  • sudo systemctl restart sshd.service

Open als voorzorgsmaatregel een nieuw terminalvenster en test of de SSH-service correct werkt voordat u deze sessie sluit:

  • ssh username@remote_host

Nadat u uw SSH-service hebt geverifieerd, kunt u alle huidige serversessies veilig afsluiten.

De SSH-daemon op je server reageert nu alleen op SSH-sleutels. Wachtwoordgebaseerde authenticatie is succesvol uitgeschakeld.

Conclusie

U moet nu op SSH-sleutel gebaseerde authenticatie op uw server geconfigureerd hebben, zodat u kunt inloggen zonder een accountwachtwoord in te voeren.

59 of 145 people found this helpful.   




ISPWeb B.V.