URL: https://linuxfr.org/forums/general-general/posts/utilisation-du-ssh-agent-pour-des-cles-ssh-signees Title: Utilisation du ssh-agent pour des clés SSH signées Authors: Flyounet Date: 2015年03月12日T13:08:03+01:00 License: CC By-SA Tags: openssh et ssh-agent Score: 2 Bonjour, ###Avant propos :### Comme nombre d'entre vous le savent (pour ne pas dire tous), le serveur openSSH permet depuis la version 5.4 (oui, c'est vieux), de gérer une autorité de certification (rangez votre openSSL, il ne vous servira pas ici). ###Problème :### Les serveurs ont leur CA installée et configurée. Cela fonctionne correctement, je rentre la passphrase de ma clefs signée et me voilà loggué. Cependant avec mes clefs signées, mon ami `ssh-agent` ne "retient" pas mes passphrases lorsque je décide de me connecter à serveur utilisant une CA. Pourtant cela fonctionne correctement avec les serveurs ne gérant pas la CA. Auriez-vous un pointeur ou une piste ? Merci. _Pour ceux qui veulent savoir pourquoi :_ Oui, je pense que certains qui liront ceci se poseront la question. * Les clefs SSH ne semble pas avoir de péremption. Une clef générée par un utilisateur est valide "toujours". Une clef signée par une CA peut avoir une durée de vie. * Pour utiliser sa clef sur un nouveau serveur, il est d'abord nécessaire d'envoyer sa clef publique sur le serveur. Quand on a un `ChallengeResponseAuthentication no` et `PasswordAuthentication no`, ça va pas être possible. Avec une clef signée, il n'y a plus ce problème ; Il n'y a rien a envoyé sur le serveur (si la CA est configurée), la clef est trustée, l'utilisateur se loggue. * Les clefs sont "révocables". _Pour ceux qui veulent savoir comment :_ Il est important de noter qu'il doit y avoir une _confiance_ entre les parties. * L'utilisateur génère sa clef comme il fait d'habitude (elle peut être déjà existante) : `ssh-keygen -f macle` (il peut ajouter un `-t rsa -b 4096`, c'est son choix). * Les gens qui savent se font une CA : `ssh-keygen -f maCA` (ils peuvent ajouter un `-t rsa -b 4096`, c'est leur choix). * Il faut (à un moment ou à un autre) que la clef de l'utilisateur et la CA soient accessible au même moment depuis une machine, pour faire la signature (cela peut être fait manuellement, ou via un script). Bien sûr, il semble fortement improbable que l'on fournisse à l'utilisateur la passphrase de la CA. Bref, * La signature se fait : `ssh-keygen -s maCA -I user_username -n username -V +52w macle.pub` (*) * Être sûr que la CA est sur les serveurs (on parle bien sûr uniquement du `maCA.pub`) et le serveur SSH configuré correctement `TrustedUserCAKeys /etc/ssh/CA/maCA.pub` (\*\*) (*) : Le `-I` est un identifiant qui pourra se retrouver dans les logs. Le `-n` est la liste des utilisateurs (séparés par une virgule) que la clef peut utiliser. Le `-V +52w`indique que la clef a _une durée de vie_ de 52 semaines. (\*\*) : On peut aussi ajouter dans la configuration un `AuthorizedPrincipalsFile /etc/ssh/CA/users.authorized` et n'autoriser qu'une liste restreinte d'utilisateur (un utilisateur par ligne).