Geneer SSH public/private key paar met PuttY en PuTTYgen

  •  

Onderstaande stappen leggen je uit hoe je met behulp van PuTTYgen een private/public key paar kunt genereren, waarmee je direct kunt inloggen op een SSH server. Uiteraard gaan we er vanuit dat je SSH reeds geconfigureerd hebt. De public-key of publieke sleutel zal worden opgeslagen op de betreffende server en de private-key of privé sleutel dien je zelf te bewaren.

Om ervoor te zorgen dat het inloggen extra veilig blijft worden er een aantal aanpassingen aan je SSH-instellingen aangeraden in onderstaande stappen. Houdt echter je hoofd erbij en zorg ervoor dat je jezelf niet buiten sluit. Het advies is daarom ook om dit eerst op een server te proberen waar je fysiek bij kunt of een virtuele server waar je door middel van een remote console o.i.d. bij kunt.

Let op!

Door onderstaand stappenplan te volgen kun je de beveiliging van jouw server flink om zeep helpen - en daar ben je zelf verantwoordelijk voor. Denk na en neem alle extra stappen om de beveiliging te optimaliseren. Zie onder voor advies.

1. Installeer PuTTY en PuTTYgen

Start met het installeren van PuTTY en PuTTYgen, de gemakkelijkste maneer is gebruik te maken van de putty-0.67-installer.msi. Als alternatief zou je putty.exe en puttygen.exe los kunnen downloaden en bijvoorbeeld op een USB disk of in Google Drive kunnen plaatsen mocht je er een portable-installtie van willen maken.

2. Geneer het Private/Public Key paar

Open PuTTYgen en klik op "generate". Beweeg tot het balkje vol is met je muis over het venster in een willekeurig patroon. Dit is om "semi-random" data te genereren voor het sleutelpaar.

Vul vervolgens de vakken "Key comment", "Key passphrase" en "Confirm passphrase" naar eigen wens in. Het wordt aangeraden om in de passphrase velden een sterk wachtwoord te kiezen dat je niet vergeet. Als je hier geen wachtwoord kiest dan kan iemand met behulp van je private-key namelijk inloggen op je server.

Sla als laatste je privé sleutel op door middel van de "Save private key" knop, bijvoorbeeld als "servernaam.ppk". Wanneer je een portable installatie wilt maken kun je deze key opslaan op een USB disk of in Google Drive - echter raadt ik hiervoor nogmaals sterk aan om een wachtwoord voor je key te kiezen.

Laat het PuTTYgen venster nog even open staan.

3. De public-key installeren

De uiteindelijke locatie van de key bepaalt als welke user je uiteindelijk inlogt op de server wanneer je de key gebruikt. Wanneer je direct als root wilt inloggen, dan dien je onderstaand ook als root in te loggen of eventueel te switchen door su root of sudo su root te gebruiken.

Log nu in via SSH op de doelserver, zoals je reeds gewens bent en controleer of het .ssh-directory reeds bestaat:

ls -a ~/

Indien de map .ssh niet in het resultaat staat, dan dient deze eerst aangemaakt te worden:

mkdir ~/.ssh
chmod 700 ~/.ssh

Vervolgens dien je de publieke sleutel in het bestand autorized_keys te plaatsen. Kopieer hiervoor de key uit het tekstvak in PuTTYgen, en plak (RMB in putty) deze via je favoriete editor in het authorized_keys bestand (gewoon onderaan toevoegen als er al keys staan):

nano ~/.ssh/authorized_keys

Extra veiligheid is in te bouwen door alleen toegang van een of een paar ip-adressen toe te staan (dit is altijd aan te raden maar moet je gewoon doen als je de key voor root-access gebruikt of als je een portable installatie hebt). Zorg in dit geval dat de toegevoegde regel er ongeveer als volgt uit ziet (uiteraard wel even ip's veranderen/verwijderen, het stuk vanaf "ssh-rsa" komt dus uit PuTTYgen):

from="1.2.3.4,5.6.7.8",no-agent-forwarding ssh-rsa AAAAB3N[...]P6ds= key.comment

Als laatste ervoor zorgen dat niemand bij jouw authorized_keys bestand kan - behalve de huidige user:

chmod 600 ~/.ssh/authorized_keys

4. SSH configureren

Wanneer je via SSH direct als root kunt inloggen op je server, dan hoef je eigenlijk geen aanpassingen te maken, echter adviseer ik je dan juist om onderstaande aanpassingen te maken. Start met het openen van het sshd_config bestand:

nano /etc/ssh/sshd_config

Pas vervolgens de toegestane inlogmethode als onderstaand aan:

PermitRootLogin without-password

Hiermee blijft het inloggen als non-root users gewoon werken, maar kun je alleen nog maar met een key als root inloggen. Als laatste dient de ssh-daemon nog even herstart te worden:

service ssh restart

Als bovenstaande niet werkt (moet je waarschijnlijk je server updaten), kun je onderstaande proberen:

/etc/init.d/ssh restart

5. Eindelijk inloggen

Sluit allereerst alle openstaande SSH-sessies (niet met het kruisje natuurlijk, maar gewoon door exit te typen. Vervolgens maak je een snelkoppeling om snel verbinding te maken d.m.v. de key. Vul onderstaande in het locatie-vak in:

"C:\Program Files (x86)\PuTTY\putty.exe" -ssh root@1.2.3.4 -i "%USERPROFILE%\Documents\voorbeeld-key.ppk"

Wanneer je bijvoorbeeld gebruik maakt van Google Drive en je hebt daar bijvoorbeeld een map "putty" waar zowel putty.exe als de prive-sleutels (.ppk-bestanden) in staan, kun je bovenstaande als volgt aanpassen:

"putty.exe" -ssh root@1.2.3.4 -i "voorbeeld-key.ppk"

Of:

"putty.exe" -ssh root@1.2.3.4 -i "%USERPROFILE%\Google Drive\putty\voorbeeld-key.ppk"

Wanneer je nu dubbelklikt op de snelkoppeling wordt er een PuTTY venster geopend met een melding als "Authenticating with public-key [...]". Als dat niet het geval is heb je waarschijnlijk bovenstaande snelkoppeling niet juist ingesteld.

Als je alle adviezen hebt opgevolgt wordt je vervolgens om de passphrase gevraagd die je tijdens het genereren van je key hebt ingevuld.