Doe meer met ssh host keys
Gepubliceerd: Dinsdag 9 november 2010
Auteur: Koen Vervloesem
De meesten kijken maar één keer naar een ssh host key, namelijk de eerste keer dat ze via ssh op die computer inloggen. Er is echter veel meer dat je met ssh host keys kunt doen, en we geven hier enkele tips.
Als je vaak nieuwe virtuele machines aanmaakt om iets te testen, zijn de waarschuwingen dat de host key niet overeenkomt met het IP-adres enkel maar lastig. In zo'n geval kun je de optie UserKnownHostsFile=/dev/null gebruiken om de publieke sleutel niet te vergelijken met de sleutel in je known_hosts en StrictHostKeyChecking=no om geen controles uit te voeren. Inloggen gaat dan als volgt:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@vm
Als je altijd dezelfde hostnaam voor je nieuwe virtuele machines gebruikt, kun je de opties ook in het configuratiebestand van ssh zetten, bijvoorbeeld:
Host vm
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Overigens kun je met ssh-keygen -F host controleren of een specifieke host in je known_hosts te vinden is (handig als je hashed hostnames gebruikt en een eenvoudige grep dus niet werkt) en met ssh-keygen -R host kun je een host key verwijderen.
Sleutels scannenAls je de publieke sleutel van een willekeurige server (die nog niet in je known_hosts geregistreerd hoeft te zijn) wil opvragen, kan dat heel eenvoudig met ssh-keyscan host. Het programma ssh-keyscan is ook handig om een initiële en globale known_hosts aan te maken in /etc/ssh/ssh_known_hosts. Je gebruikers worden dan niet meer lastiggevallen met meldingen voor je servers. Daarvoor voer je de volgende commando's uit voor elke server, waarbij je zowel de korte als lange hostname en het IP-adres toevoegt:
ssh-keyscan -t rsa,dsa host >> /etc/ssh/ssh_known_hosts
ssh-keyscan -t rsa,dsa host.domain >> /etc/ssh/ssh_known_hosts
ssh-keyscan -t rsa,dsa ip >> /etc/ssh/ssh_known_hosts
Controleer via DNS
Je kunt ook DNS gebruiken in plaats van known_hosts bestanden om te controleren of een host key correct is. Dit is vooral interessant als je je eigen DNS-server hebt en zowel op de server als op de clients DNSSEC gebruikt: dan heb je een cryptografisch beveiligde manier om de correctheid van host keys na te gaan. De benodigde informatie wordt in het SSHFP DNS-record opgeslagen. Met de gelijknamige tool sshfp genereer je zo'n records, bijvoorbeeld uit je known_hosts of door hosts te scannen.
Aan de kant van de ssh-client moet je dan de optie VerifyHostKeyDNS=yes gebruiken. Als de host key overeenkomt met wat in het DNS-record opgegeven staat, krijg je de melding "Matching host key fingerprint found in DNS."; anders "No matching host key fingerprint found in DNS."
Bron: Techworld
De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.
