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 [email protected]

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 scannen

Als 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