Linux-laptop met een shell-prompt

Neem cybersecurity serieus en gebruik SSH-sleutels voor toegang tot externe aanmeldingen. Ze zijn een veiliger manier om verbinding te maken dan wachtwoorden. We laten je zien hoe je SSH-sleutels genereert, installeert en gebruikt in Linux.

Wat is er mis met wachtwoorden?

Secure shell (SSH) is het gecodeerde protocol dat wordt gebruikt om in te loggen bij gebruikersaccounts op externe Linux- of Unix-achtige computers. Dergelijke gebruikersaccounts worden doorgaans beveiligd met wachtwoorden. Wanneer u zich aanmeldt bij een externe computer, moet u de gebruikersnaam en het wachtwoord opgeven voor het account waarbij u zich aanmeldt.

Wachtwoorden zijn de meest gebruikelijke manier om toegang tot computerbronnen te beveiligen. Desondanks heeft wachtwoordgebaseerde beveiliging gebreken. Mensen kiezen zwakke wachtwoorden, delen wachtwoorden, gebruiken hetzelfde wachtwoord op meerdere systemen, enzovoort.

SSH-sleutels zijn veel veiliger en als ze eenmaal zijn ingesteld, zijn ze net zo gemakkelijk te gebruiken als wachtwoorden.

Wat maakt SSH-sleutels veilig?

SSH-sleutels worden in paren gemaakt en gebruikt. De twee sleutels zijn gekoppeld en cryptografisch beveiligd. De ene is uw openbare sleutel en de andere is uw privésleutel. Ze zijn gekoppeld aan uw gebruikersaccount. Als meerdere gebruikers op een enkele computer SSH-sleutels gebruiken, ontvangen ze elk hun eigen paar sleutels.

Uw privésleutel wordt geïnstalleerd in uw thuismap (meestal) en de openbare sleutel wordt geïnstalleerd op de externe computer (of computers) waartoe u toegang moet hebben.

Uw privésleutel moet veilig worden bewaard. Als het voor anderen toegankelijk is, bevindt u zich in dezelfde positie alsof ze uw wachtwoord hadden ontdekt. Een verstandige en zeer aan te bevelen voorzorgsmaatregel is dat uw privésleutel op uw computer wordt versleuteld met een robuuste wachtwoordzin.

De openbare sleutel kan vrij worden gedeeld zonder enig compromis voor uw veiligheid. Het is niet mogelijk om na onderzoek van de openbare sleutel te bepalen wat de privésleutel is. De privésleutel kan berichten versleutelen die alleen de privésleutel kan ontsleutelen.

Wanneer u een verbindingsverzoek indient, gebruikt de externe computer de kopie van uw openbare sleutel om een ​​gecodeerd bericht te maken. Het bericht bevat een sessie-ID en andere metagegevens. Alleen de computer die in het bezit is van de privésleutel - uw computer - kan dit bericht ontsleutelen.

Uw computer heeft toegang tot uw privésleutel en ontsleutelt het bericht. Vervolgens stuurt het zijn eigen gecodeerde bericht terug naar de externe computer. Dit versleutelde bericht bevat onder meer het sessie-ID dat is ontvangen van de externe computer.

De externe computer weet nu dat u moet zijn wie u zegt dat u bent, omdat alleen uw persoonlijke sleutel de sessie-ID kan extraheren uit het bericht dat naar uw computer is verzonden.

Zorg ervoor dat u toegang hebt tot de externe computer

Zorg ervoor dat u op afstand verbinding kunt maken met en kunt inloggen op de externe computer. Dit bewijst dat uw gebruikersnaam en wachtwoord een geldig account hebben ingesteld op de externe computer en dat uw inloggegevens correct zijn.

Probeer niets te doen met SSH-sleutels totdat u hebt geverifieerd dat u SSH met wachtwoorden kunt gebruiken om verbinding te maken met de doelcomputer.

In dit voorbeeld is een persoon met een gebruikersaccount genaamd dave ingelogd op een computer genaamd howtogeek. Ze gaan verbinding maken met een andere computer genaamd Sulaco.

Ze voeren het volgende commando in:

ssh dave @ sulaco
ssh dave @ sulaco in een terminalvenster

Ze worden om hun wachtwoord gevraagd, ze voeren het in en ze zijn verbonden met Sulaco. Hun opdrachtregel verandert om dit te bevestigen.

gebruiker dave verbonden met sulaco met behulp van ssh en een wachtwoord

Dat is alle bevestiging die we nodig hebben. Dus gebruiker Dave kan de verbinding met Sulaco verbreken met het exit-commando:

Uitgang
gebruiker dave losgekoppeld van sulaco

Ze ontvangen het bericht dat de verbinding is verbroken en hun opdrachtregelprompt keert terug naar dave @ howtogeek.

GERELATEERD: Verbinding maken met een SSH-server vanuit Windows, macOS of Linux

Een paar SSH-sleutels maken

Deze instructies zijn getest op Ubuntu-, Fedora- en Manjaro-distributies van Linux. In alle gevallen was het proces identiek en hoefde er geen nieuwe software op een van de testmachines te worden geïnstalleerd.

Typ de volgende opdracht om uw SSH-sleutels te genereren:

ssh-keygen
ssh-keygen in een terminalvenster

Het generatieproces begint. U wordt gevraagd waar u uw SSH-sleutels wilt opslaan. Druk op de Enter-toets om de standaardlocatie te accepteren. De machtigingen voor de map beveiligen deze alleen voor uw gebruik.

Bevestiging van de opslaglocatie van de ssh-sleutel in een terminalvenster

Er wordt nu om een ​​wachtwoordzin gevraagd. We raden u ten zeerste aan om hier een wachtwoordzin in te voeren. En onthoud wat het is! U kunt op Enter drukken om geen wachtwoordzin te hebben, maar dit is geen goed idee. Een wachtwoordzin die bestaat uit drie of vier niet-verbonden woorden die aan elkaar zijn geregen, zal een zeer robuuste wachtwoordzin vormen.

Vragen om wachtwoordzin in een terminalvenster

U wordt gevraagd dezelfde wachtwoordzin nogmaals in te voeren om te controleren of u hebt getypt wat u dacht te hebben getypt.

De SSH-sleutels worden voor u gegenereerd en opgeslagen.

Sleutelgeneratie voltooid en willekeurige kunst weergegeven in een terminalvenster

U kunt de weergegeven "randomart" negeren. Sommige externe computers laten u elke keer dat u verbinding maakt hun willekeurige kunst zien. Het idee is dat je zult herkennen of de willekeurige kunst verandert en dat je de verbinding wantrouwt, omdat dit betekent dat de SSH-sleutels voor die server zijn gewijzigd.

De openbare sleutel installeren

We moeten uw openbare sleutel installeren op Sulaco, de externe computer, zodat deze weet dat de openbare sleutel van u is.

We doen dit met de opdracht ssh-copy-id. Deze opdracht maakt verbinding met de externe computer zoals de normale ssh-opdracht, maar in plaats van dat u zich kunt aanmelden, wordt de openbare SSH-sleutel overgedragen.

ssh-copy-id dave @ sulaco
ssh-copy-id dave @ sulaco

Hoewel u zich niet aanmeldt bij de externe computer, moet u nog steeds verifiëren met een wachtwoord. De externe computer moet identificeren tot welk gebruikersaccount de nieuwe SSH-sleutel behoort.

Merk op dat het wachtwoord dat u hier moet opgeven het wachtwoord is voor het gebruikersaccount waarbij u zich aanmeldt. Dit is niet de wachtwoordzin die je zojuist hebt gemaakt.

ssh-copy-id met wachtwoordprompt in een terminalvenster

Wanneer het wachtwoord is geverifieerd, draagt ​​ssh-copy-id uw openbare sleutel over naar de externe computer.

U keert terug naar de opdrachtprompt van uw computer. U bent niet verbonden met de externe computer.

pulssleutel succesvol overgedragen in een terminalvenster

Verbinding maken via SSH-sleutels

Laten we de suggestie volgen en proberen verbinding te maken met de externe computer.

ssh dave @ sulaco
ssh dave @ sulaco in een terminalvenster

Omdat het verbindingsproces toegang tot uw privésleutel vereist en omdat u uw SSH-sleutels achter een wachtwoordzin hebt beveiligd, moet u uw wachtwoordzin opgeven zodat de verbinding kan worden voortgezet.

dialoogvenster voor wachtwoordaanvraag

Voer uw wachtwoordzin in en klik op de knop Ontgrendelen.

Zodra u uw wachtwoordzin hebt ingevoerd in een terminalsessie, hoeft u deze niet opnieuw in te voeren zolang u dat terminalvenster open heeft staan. U kunt verbinding maken en verbreken met zoveel sessies op afstand als u wilt, zonder uw wachtwoordzin opnieuw in te voeren.

U kunt het selectievakje aanvinken voor de optie "Deze sleutel automatisch ontgrendelen wanneer ik ben ingelogd", maar het zal uw veiligheid verminderen. Als u uw computer onbeheerd achterlaat, kan iedereen verbinding maken met de externe computers die uw openbare sleutel hebben.

Nadat u uw wachtwoordzin hebt ingevoerd, bent u verbonden met de externe computer.

verbinding externe computer in een terminalvenster

Om het proces nogmaals end-to-end te verifiëren, verbreekt u de verbinding met de exit-opdracht en maakt u opnieuw verbinding met de externe computer vanuit hetzelfde terminalvenster.

ssh dave @ sulaco
ssh key verbinding en verbreken in een terminalvenster

U wordt verbonden met de externe computer zonder dat u een wachtwoord of wachtwoordzin nodig heeft.

Geen wachtwoorden, maar verbeterde beveiliging

Cybersecurity-experts praten over iets dat beveiligingswrijving wordt genoemd. Dat is de kleine pijn die u moet verdragen om extra beveiliging te krijgen. Er zijn meestal wat extra stappen nodig om een ​​veiligere manier van werken aan te nemen. En de meeste mensen vinden het niet leuk. Ze geven eigenlijk de voorkeur aan een lagere beveiliging en het gebrek aan wrijving. Dat is de menselijke natuur.

Met SSH-sleutels krijgt u meer veiligheid en meer gemak. Dat is een duidelijke win-win.