Page 1 sur 1

[Clé SSH] Retenir la passphrase automatiquement ? (Résolu)

Publié : dim. 27 mars 2016, 13:10
par Xorg
Salut,

Il m'arrive souvent de devoir retaper ma passphrase pour utiliser une clé SSH. Quand j'ai ssh-agent qui tourne en arrière plan, un ssh-add clé suffit pour retenir le mot de passe.
Avec un peu de bidouille au niveau du shell, j'arrive à lancer ce ssh-add quand j'en ai besoin (par exemple, lors d'un git clone). Mais par exemple, quand le git clone est effectué par un script, ça n’effectue pas le ssh-add automatiquement...

Enfin bref. Existe-t-il quelque chose qui permet de retenir la passphrase automatiquement quand on utilise une clé ?
Sur le wiki, j'ai trouvé keychain, et quand je mets eval $(keychain --eval --quiet clé dans mon ~/.zlogin, ça me demande ma passphrase dès que je me log sur ma machine, mais ce n'est pas ce que je veux (je veux que ça la demande uniquement quand j'ai besoin de l'utiliser).
J'ai essayé avec --noask, mais là ça me demande jamais rien et ça ne retient pas la passphrase...

Voilà, si vous connaissez quelque chose qui sait faire ça, je suis preneur. :mrgreen:

Merci d'avance.

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : dim. 27 mars 2016, 15:13
par HS-157
Salut,
Pour moi j'utilise ssh-agent pour gérer mes clefs.

Je mets ce script dans mon .xinitrc pour qu'il soit lancer tant que mon ordi est allumé ou du moins, le temps que mon serveur graphique est lancé.

Code : Tout sélectionner

ssh-agent -s > /tmp/ssh.keys
. /tmp/ssh.keys
rm  /tmp/ssh.keys
Car si tu fais ça dans ton terminal, il va pas rester lancé.

Tu as juste à faire un ssh-add pour rajouter ta clef dans le trousseau.

Normalement avec zsh, tu peux faire en sorte qu'il te rajoute ta clef dans le trousseau pour la premier connexion à ton serveur en demandant ta passphrase.

À voir aussi pour que ssh-agent oublie ta clef au bout de X temps, car c'est mieux niveau sécurité.

Si ça règle pas ton problème, regarde si le programme lance git avec ton utilisateur,
Car ssh-agent doit sûrement tourner que pour ton utilisateur.
Tu as essayé lancer par toi même une commande git pour voir si ça marche ?

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : dim. 27 mars 2016, 15:30
par Xorg
En fait j'arrive à utiliser ssh-agent et ssh-add, ce n'est pas ça le soucis.
Tu dis "ajoute ta clef dans le trousseau pour la premier connexion à ton serveur en demandant ta passphrase". Donc ça veut dire que tu ajoutes la clé même si tu n'en auras pas besoin. Moi je cherche quelque chose qui l'ajoute automatiquement au trousseau.

Petit exemple concret : j'ai ssh-agent qui tourne, je modifie un projet Git et je veux faire un push -> quelque chose ajoute la clé au trousseau puis fait le push. :)

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : dim. 27 mars 2016, 15:45
par HS-157
Xorg a écrit :En fait j'arrive à utiliser ssh-agent et ssh-add, ce n'est pas ça le soucis.
J'ai cru comprendre, mais quand je me suis apperçu, j'avais déjà écris un paté... :roll:
Xorg a écrit :Tu dis "ajoute ta clef dans le trousseau pour la premier connexion à ton serveur en demandant ta passphrase". Donc ça veut dire que tu ajoutes la clé même si tu n'en auras pas besoin.
Nan, je rajoute ma clef dans le trousseau quand je me connecte sur mon serveur (pas graphique) pour la première fois, après, les coups suivant, j'ai plus besoin de taper ma clef.
Xorg a écrit :Moi je cherche quelque chose qui l'ajoute automatiquement au trousseau.
Petit exemple concret : j'ai ssh-agent qui tourne, je modifie un projet Git et je veux faire un push -> quelque chose ajoute la clé au trousseau puis fait le push. :)
Ouais, rajouter automatiquement ta clef qui a une passphare sans taper ta passphare dans le trousseau, c'est comme avoir une clef sans passphare, niveau sécurité, c'est nul.

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : dim. 27 mars 2016, 17:04
par Xorg
Décidément... :mrgreen:

Toi tu ajoutes ta clé au trousseau manuellement quand tu veux te connecter à ton serveur. Moi ce que je cherche à faire, c'est que quand je me connecte au serveur, il me propose d'ajouter la clé au trousseau (je me demande si ce n'est pas Gnome Keyring qui peut faire ça).

C'est vrai que le mot "automatique" n'est pas le meilleur... Je voulais dire "inviter à rentrer la passphrase au moment approprié". Les clés sans passphrase n'ont pas ce soucis.
Je suis d'accord pour taper ma passphrase, mais pas à chaque fois que je démarre mon PC. Juste la rentrer une seule fois quand j'en ai besoin, sans faire moi-même un ssh-add. :)

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : dim. 27 mars 2016, 20:17
par HS-157
Xorg a écrit :Toi tu ajoutes ta clé au trousseau manuellement quand tu veux te connecter à ton serveur. Moi ce que je cherche à faire, c'est que quand je me connecte au serveur, il me propose d'ajouter la clé au trousseau
Oui, pour l'instant je fais un ssh-add <ma_ clef> pour rajouter ma clef dans le trousseau et après un ssh <ma_machine> et je me co automatiquement dessus.
Xorg a écrit :Je voulais dire "inviter à rentrer la passphrase au moment approprié". Les clés sans passphrase n'ont pas ce soucis.
Je suis d'accord pour taper ma passphrase, mais pas à chaque fois que je démarre mon PC. Juste la rentrer une seule fois quand j'en ai besoin, sans faire moi-même un ssh-add. :)
Ok, et j'ai cru comprendre que tu utilisais zsh.
J'ai dis dans mon premier message que zsh pouvait t'inviter à rentrer ta passphrase pour rajouter ta clef dans le trousseau quand tu te co en ssh.
Normalement, zsh peut lancer une commande avant une autre, et c'est hook pre-exec.
Tu peux dire : "si la commande tapée contient ssh et que l'agent ssh n'a pas d'identité en stock, alors je demande la passpĥrase"

Je te laisse chercher.

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : dim. 27 mars 2016, 21:01
par Xorg
C'est plus au moins ce que j'avais déjà en fait. J'avais un alias sur la commande git et la commande ssh, et ça vérifiait si la clé était déjà dans le trousseau. Le cas échéant, ça l'ajoutait puis ça exécutait la commande que j'avais tapé.
Mais bon, comme je disais dans mon premier message, il suffit que ça soit n'importe quel script qui appelle une de ces deux commandes, et là ça n'ajoute pas ma clé dans le trousseau (c'est normal d'un côté que les scripts n'utilisent pas les alias).

J'ai installé Gnome Keyring pour tester, et ça a le comportement que je recherchais : ça ouvre la boite de dialogue uniquement quand il faut déverrouiller une clé, puis ça l'ajoute au trousseau et je suis tranquille.
Problème : je cherche l'équivalent en CLI ! Je ne suis pas très fan des fenêtres graphiques qui s'ouvrent pour me demander des choses quand je travaille en ligne de commande. :mrgreen:

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : dim. 27 mars 2016, 21:11
par HS-157
Alors là, je peux pas t'aidé.

regarde quand même pour les ancres de zsh, pour voir si les scripts prend en compte.

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : dim. 27 mars 2016, 22:26
par Moviuro
ssh-agent est incapable de faire ça (dixit les gens de #openssh @ freenode).
Deux solutions :
  • Écrire un beau wrapper pour ssh(1) qui appelle ssh-add(1) au besoin
  • Utiliser un autre agent ssh, comme gnupg-agent
Je te laisse gratter et me recontacter si tu veux écrire une jolie fonction SHELL pour wrapper ssh-add et ssh-agent.

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : dim. 27 mars 2016, 22:36
par Xorg
HS-157 a écrit :regarde quand même pour les ancres de zsh, pour voir si les scripts prend en compte.
D'accord, merci pour l'aide. C'est vrai que je n'exploite pas tout le potentiel de Zsh. :roll:
Moviuro a écrit :ssh-agent est incapable de faire ça (dixit les gens de #openssh @ freenode).
Deux solutions :
  • Écrire un beau wrapper pour ssh(1) qui appelle ssh-add(1) au besoin
  • Utiliser un autre agent ssh, comme gnupg-agent
Je te laisse gratter et me recontacter si tu veux écrire une jolie fonction SHELL pour wrapper ssh-add et ssh-agent.
ssh-agent est incapable de le faire, on est d'accord. Mais plusieurs logiciels l'utilisent (Keychain et Gnome Keyring j'ai l'impression).
Ton histoire de wrapper m'intéresse. Comment est-ce que je me débrouille pour que les les programmes qui exécutent ssh(1) utilisent mon wrapper ? :D
Écrire le wrapper en lui-même, ce n'est pas un soucis, j'ai déjà ça sous la main.

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : lun. 28 mars 2016, 09:41
par benjarobin
Créer un dossier dans /usr/local, y placer tes wrapper, puis modifier le path pour que le chemin de tes wrapper soit au début

Re: [Clé SSH] Retenir la passphrase automatiquement ?

Publié : lun. 28 mars 2016, 20:26
par Xorg
Effectivement, j'ai testé de faire un script /usr/local/bin/ssh et ça a l'air de fonctionner. Dans le PATH par défaut, /usr/local/bin est avant /usr/bin. :D

Bien, je n'ai plus qu'à écrire mes wrappers, et ça sera tout bon. Je mets le sujet en résolu, merci à tout le monde. :wink:

Re: [Clé SSH] Retenir la passphrase automatiquement ? (Résolu)

Publié : lun. 28 mars 2016, 23:48
par Moviuro
Tu pourras partager tes scripts une fois terminés ? :D :copain:

Re: [Clé SSH] Retenir la passphrase automatiquement ? (Résolu)

Publié : mar. 29 mars 2016, 16:24
par Xorg
Moviuro a écrit :Tu pourras partager tes scripts une fois terminés ? :D :copain:
Ok, si tu veux. J'ai créé un Gist : https://gist.github.com/X0rg/1642951337f55f57678f.
Je l'ai tout simplement placé dans /usr/local/bin. Comme a dit Benjarobin, il faut juste s'assurer que /usr/local/bin soit avant /usr/bin dans le PATH (mais c'est le cas du PATH par défaut d'ArchLinux).

Ce script est basé sur la configuration contenue dans le fichier ~/.ssh/config. Pour le bon fonctionnement du script, si ce fichier contient la configuration pour plusieurs machines, il faut au moins une ligne vide entre chaque machine (comme l'exemple suivant).

Code : Tout sélectionner

# Fichier ~/.ssh/config
Host aur.archlinux.org
    IdentityFile ~/.ssh/id_rsa-aur
    User aur
    Port 22

Host machine.quelquechose
    IdentityFile ~/.ssh/id_rsa1
    User utilisateur1
    Port 22

Host machine.quelquechose
    IdentityFile ~/.ssh/id_rsa2
    User utilisateur2
    Port 22
Toutefois, ce script reste basique, il ne prend pas en charge le cas d'une machine avec plusieurs utilisateurs configurés. Dans cet exemple, la connexion avec utilisateur1 ou utilisateur2 à machine.quelquechose ne va pas faire le résultat attendu.
Mais bon, vu que je ne suis pas concerné par ce cas de figure, c'est pour ça que je laisse ça comme ça. :mrgreen:

À propos du unset DISPLAY, c'est voulu, c'est parce que Git appel ssh-askpass, et vu que je ne l'ai pas ça ne fonctionnait pas (je n’utilise pas ssh-askpass). Donc pour utiliser ssh-askpass, il faut retirer cette ligne.

Pour démarrer l'agent SSH, je vous invite à lire le wiki. :)

Re: [Clé SSH] Retenir la passphrase automatiquement ? (Résolu)

Publié : mer. 30 mars 2016, 11:12
par benjarobin
Je pense qu'il y a moyen de faire mieux via awk : http://stackoverflow.com/questions/1277 ... nformation
Mais je suis si mauvais dans ce langage...
Ou utiliser un module Perl tout fait pour cela : http://search.cpan.org/dist/Net-SSH-Per ... /Config.pm

Re: [Clé SSH] Retenir la passphrase automatiquement ? (Résolu)

Publié : mer. 30 mars 2016, 14:03
par Xorg
Je ne savais même pas que awk pouvait faire ça. :lol:
Mes compétences sont assez limitées en terme de script, mais avec un peu de bidouille je me débrouille. :)