Verspreid publieke ssh-sleutels met ssh-import-id

Het programma ssh-import-id helpt je om je gebruikers eenvoudig te laten inloggen met hun publieke ssh-sleutel. Met zijn pull-model doet dit programma het anders dan het veelgebruikte ssh-copy-id.

Met het programma ssh-copy-id installeer je je publieke sleutel in het bestand ~/.ssh/authorized_keys van je home-directory op een andere machine. Dat gaat heel eenvoudig:


$ ssh-copy-id gebruiker@example.com



Met de optie -i kun je een ander publiekesleutelbestand opgeven dan de standaardkeuze ~/.ssh/id_rsa.pub. Ssh-copy-id logt in op de server example.com, waarbij het je wachtwoord vraagt, waarna het de publieke sleutel toevoegt aan het bestand met toegelaten sleutelparen. De volgende keer dat je op de server inlogt vanaf je machine met de bijbehorende geheime sleutel, moet je geen wachtwoord meer ingeven.

Pull
Ssh-copy-id is handig, maar gebruikt een push-model. Dat wil zeggen dat elke gebruiker zijn publieke sleutel moet uploaden naar elke server waarop hij wil inloggen met zijn geheime sleutel. Daarom heeft Dustin Kirkland enkele jaren geleden ssh-import-id ontwikkeld. Ssh-import-id werkt met een pull-model: je gebruikt dit op de server waarop je met je sleutel wil inloggen en downloadt daar je publieke sleutel van een keyserver. Dat gaat als volgt:


$ ssh-import-id gebruiker



Ssh-import-id is oorspronkelijk voor Ubuntu ontwikkeld, dus standaard wordt de publieke sleutel gedownload van Ubuntu's ontwikkelsite Launchpad. Dit is echter eenvoudig aan te passen in het configuratiebestand /etc/ssh/ssh_import_id. Standaard staat hierin de volgende regel:


URL="https://launchpad.net/~%s/+sshkeys"



Pas deze URL aan voor je eigen keyserver. Hierin staat de variabele %s voor de gebruikersnaam. De inhoud van het bestand heeft dezelfde syntax als de regels in ~/.ssh/authorized_keys. Zo kun je voor elke gebruiker een bestand met zijn publieke sleutel(s) op je keyserver plaatsen. De URL moet wel via https bereikbaar zijn en een geldig, ondertekend ssl-certificaat hebben, want anders kan je server wel eens sleutels importeren die door een man-in-the-middle aanval gecompromitteerd zijn...

Let wel op: ssh-import-id importeert de publieke sleutels van de opgegeven gebruiker in het bestand ~/.ssh/authorized_keys van de gebruiker die ssh-import-id uitvoert. Dit is echter een handige manier om bijvoorbeeld snel in de cloud een virtuele machine op te starten met één account en collega's op deze account te laten inloggen om samen aan iets te werken, zonder dat je hen een wachtwoord moet doorgeven. Je voegt eenvoudigweg hun publieke sleutels toe met ssh-import-id, dat bovendien ook meerdere gebruikersnamen tegelijk als parameters ondersteunt.