Forum général.général Utilisation du ssh-agent pour des clés SSH signées

Posté par (page perso) . Licence CC by-sa
2
12
mar.
2015

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 +52windique 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).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.