Hoe te authenticeren over SSH met sleutels in plaats van wachtwoorden

Hoe te authenticeren over SSH met sleutels in plaats van wachtwoorden / Linux

SSH is een geweldige manier om op afstand toegang tot uw computer te krijgen. Vergelijkbaar met FTP, kun je verbinding maken via SSH FTP Wat SSH is en hoe het anders is Van FTP [Technologie verklaard] Wat SSH is en hoe het anders is Van FTP [Technologie verklaard] Lees meer om veilige toegang te krijgen tot een fileserver met je favoriete FTP client Master FTP-bestandsoverdrachten op al uw locaties met FileZilla Master FTP-bestandsoverdrachten op al uw locaties met FileZilla Een groot aantal FTP-clients van weleer had last van haperingen bij grote bestandsoverdrachten. De apps ondervonden de gebruikelijke time-outs die u zou verwachten wanneer de computer daar 15 uur zou zitten om ... Lees Meer, snel toegang te krijgen tot externe bestanden of zelfs een netwerkschijf op uw computer te monteren. Maar SSH heeft meer te bieden dan externe toegang tot bestanden. Inloggen via SSH in Terminal (of met PuTTY op Windows) geeft je externe shell-toegang (SSH is tenslotte een afkorting voor Secure SHell). Het is hoe ik mijn mediaserver op afstand kan beheren.

Wanneer u de poorten opent Wat is poortdoorsturing en hoe kan dit mij helpen? [MakeUseOf Explains] Wat is Port Forwarding en hoe kan het mij helpen? [MakeUseOf Explains] Huil je een beetje naar binnen als iemand je vertelt dat er een probleem is met de poortdoorsturing en daarom zal je glanzende nieuwe app niet werken? Je Xbox laat je geen games spelen, je torrent downloads weigeren ... Lees meer op je router (poort 22 om precies te zijn) je kunt niet alleen toegang krijgen tot je SSH-server vanuit je lokale netwerk, maar overal ter wereld.

U wilt echter niet het risico nemen om een ​​zwak wachtwoord te gebruiken voor authenticatie. Als iemand via SSH toegang tot uw computer krijgt, krijgen deze volledige shell-toegang. Voor de duidelijkheid, dat is niet iets dat we willen. Gelukkig is het heel eenvoudig om uw wereldwijde SSH-server op een zeer veilige manier in te stellen door op sleutels gebaseerde authenticatie te gebruiken en wachtwoordverificatie op uw server helemaal uit te schakelen..

Is dit voor mij?

Het is verleidelijk om laks te worden met persoonlijke veiligheid. Als u de server voor privédoeleinden gebruikt, denkt u misschien dat mensen gewoon niet weten wat uw server is en dus niet proberen het te hacken - beveiliging door middel van obscuriteit. Dat zou een zijn heel verkeerde veronderstelling. Omdat (de meeste) SSH-verkeer wordt verzonden op poort 22, controleren aanvallers routinematig de zichtbaarheid van poort 22 op willekeurige IP-adressen, gevolgd door een brute force-aanval. Dit is een van de manieren waarop botnets worden gemaakt voor gebruik in DDOS-aanvallen. Wat is een DDoS-aanval? [MakeUseOf Explains] Wat is een DDoS-aanval? [MakeUseOf Explains] De term DDoS fluit voorbij als cyberactivisme massaal zijn hoofd opsteekt. Dit soort aanvallen maken internationale krantenkoppen vanwege meerdere redenen. De problemen die de start zijn van die DDoS-aanvallen zijn vaak controversieel of zeer ... Lees meer .

Om een ​​lang verhaal kort te maken: als je je SSH-server via internet uitzend (dat wil zeggen poort 22 doorsturen), dan is dit voor jou.

Het idee van op sleutels gebaseerde SSH-logins

Key-gebaseerde SSH-aanmeldingen zijn afhankelijk van het idee van cryptografie met openbare sleutels. Het zou ons te ver voeren om de fijne kneepjes uit te leggen, maar we zullen proberen een simpel beeld te schetsen van wat er achter de schermen gebeurt.

In het onderstaande proces genereert uw clientcomputer twee sleutels: een openbare sleutel en een persoonlijke sleutel. Het algemene idee is dat u gegevens met de openbare sleutel kunt coderen, maar deze alleen met de persoonlijke sleutel kunt decoderen. We plaatsen de openbare sleutel op de server en vragen deze om alle uitgaande communicatie te versleutelen. Dit zorgt ervoor dat alleen die clients met de persoonlijke sleutel de gegevens kunnen decoderen en lezen.

1. Installeer OpenSSH

Eerst gaan we een SSH-server opzetten met behulp van OpenSSH. Als u al een SSH-server hebt en gewoon wilt weten hoe u sleutelgebaseerde authenticatie instelt, kunt u deze stap overslaan. Gebruik uw favoriete pakketbeheerder om de OpenSSH-servertoepassing te installeren. De eenvoudigste manier is misschien nog steeds om de apt-get commando van de Terminal.

sudo apt-get install openssh-server

Voer uw wachtwoord in, bevestig en wacht een minuut om het te voltooien. Gefeliciteerd, je hebt nu een SSH-server. (Dat was gemakkelijk!)

U kunt de toepassing gebruiken zoals deze is of bewerken / Etc / ssh / sshd_config om het te configureren. Voer de ... uit man sshd_config commando in Terminal om meer informatie te krijgen. Een andere geweldige bron om meer te leren over OpenSSH is de relevante Ubuntu-helppagina.

2. Genereer sleutels

We zullen een set sleutels genereren. Voer de volgende opdrachten uit (aangepast vanaf de OpenSSH / Keys Ubuntu Help-pagina).

mkdir ~ / .ssh
chmod 700 ~ / .ssh
ssh-keygen -t rsa

De eerste opdracht maakt een verborgen map '.ssh' in je thuismap, de tweede opdracht verandert de toegangsrechten van de map terwijl de derde opdracht daadwerkelijk een set RSA-sleutels genereert. U wordt eerst om een ​​locatie gevraagd om de sleutels op te slaan (laat dit leeg en druk op Enter om op te slaan op de standaardlocatie) en ten tweede voor een wachtwoordzin.

Deze wachtwoordzin codeert de privésleutel die op uw computer is opgeslagen verder, waardoor u in feite meer tijd krijgt om de SSH-server te beveiligen als uw persoonlijke sleutel ooit wordt gestolen. Zorg ervoor dat u een wachtzin kiest die u kunt onthouden, omdat u deze moet invoeren wanneer u uw sleutel probeert te gebruiken.

3. Overdracht van de openbare sleutel

Vervolgens moet u de openbare sleutel die u in de vorige stap hebt gegenereerd, overbrengen naar de SSH-servercomputer. Als uw client-machine ook Linux uitvoert, kan dit zeer eenvoudig worden bereikt door het onderstaande commando uit te voeren (vervangen) en voor de gebruikersnaam en het IP-adres op uw SSH-server).

ssh-copy-id @

Als uw client de opdracht ssh-copy-id niet ondersteunt, kunt u in plaats daarvan de onderstaande opdracht gebruiken. Het is een beetje ingewikkelder, maar bereikt in essentie dezelfde resultaten.

cat ~ / .ssh / id_rsa.pub | ssh @ "mkdir ~ / .ssh; cat >> ~ / .ssh / authorized_keys"

U wordt gevraagd om het gebruikerswachtwoord voor de SSH-server in te voeren. Als de opdrachten zonder fouten worden uitgevoerd, is uw openbare sleutel naar de server gekopieerd.

4. Schakel wachtwoordverificatie uit

Merk op dat uw systeem nog steeds niet veiliger is dan na stap één. Hoewel ten minste één client is geconfigureerd om op sleutels gebaseerde verificatie te gebruiken, laat dit nog steeds ruimte voor andere clients om verbinding te maken met een wachtwoord. Om dit te voltooien, zullen we wachtwoordverificatie helemaal uitschakelen. Na deze stap, enkel en alleen computers die het bovenstaande proces hebben doorlopen, kunnen verbinding maken met uw SSH-server.

Als u wachtwoordverificatie wilt uitschakelen, bewerkt u de / Etc / ssh / sshd_config bestand in je favoriete editor. Een van de gemakkelijkste manieren om een ​​beperkt bestand te bewerken, is wederom met behulp van Terminal. (Ik ben een voorstander van nano, maar je kunt gebruiken wat je het prettigst vindt.)

sudo nano / etc / ssh / sshd_config

Ongeveer 40 regels vanaf de onderkant van het bestand vindt u

#PasswordAuthentication Ja

Verwijder het nummerbord (#) en wijzig de instelling in 'nee', zoals hieronder.

WachtwoordAuthenticatie Nr

Het uiteindelijke bestand zou er ongeveer zo uit moeten zien:

Sla het bestand op door op CTRL + X te drukken. Bevestig de bewerking en de bestandsnaam en je bent bijna klaar. Start de SSH-server opnieuw op om deze met deze nieuwe instellingen uit te voeren.

sudo herstart ssh

U zult ook opmerken dat uw cliënt niet langer om de wachtwoordzin vraagt ​​om uw sleutel te decoderen als wachtwoordverificatie op de server is uitgeschakeld. Nu u een beveiligde SSH-server hebt, hoe wilt u deze gebruiken? Als een veilige bestandsserver, een externe shell of om andere services via SSH door te sturen? Laat het ons weten in de comments hieronder!

Afbeelding tegoed: Shutterstock

Meer informatie over: online beveiliging, externe toegang.