Forum Astuces.divers Script et clef SSH cryptée avec une passphrase : comment outrepasser ?

Posté par (page perso) .
Tags : aucun
-2
18
juin
2009
Attention
Ce script nécessite que vous retourniez en clair de votre passphrase depuis un programme. Il est évident que cela ouvre une jolie faille de sécurité, et qu'il est déconseillé d'utiliser cette méthode à outrance, spécialement en root.

Préambule
Néanmoins, ce script permet d'outrepasser la demande de passphrase des programmes openssh courant (SSH et SCP spécialement). Cela permet d'executer des crontasks, par exemple, capables de se connecter à des machines par SSH.

Voici ce que le man de ssh nous dit :

SSH_ASKPASS If ssh needs a passphrase, it will read the passphrase from the current terminal if it was run from a terminal. If ssh does not have a terminal associated with it but DISPLAY and SSH_ASKPASS are set, it will execute the program specified by SSH_ASKPASS and open an X11 window to read the passphrase. This is particularly useful when calling ssh from a .xsession or related script. (Note that on some machines it may be necessary to redirect the input from /dev/null to make this work.)


Plus précisement, la variable SSH_ASKPASS pointe vers un programme capable de retourner la passphrase en clair.


Exemple
Ainsi, le script suivant, vous permet de recuperer la clef ~/.ssh/id_rsa prête à l'emploi pour vos futurs connexions :

#!/bin/sh
#
#Chargez un ssh-agent si celui-ci ne l'est pas déjà
if [ -z "$SSH_AGENT_PID" ] ; then
eval `ssh-agent`
fi
#Ajoutez la clef
DISPLAY=nia SSH_ASKPASS=/path/to/passphrase ssh-add ~/.ssh/id_rsa < /dev/null

Notez que la variable DISPLAY est indispensable pour la bonne execution du script, definissez la avec une valeur débile mais courte.

Voici un exemple de /path/to/passphrase :

#!/bin/sh
#
echo "my_secret_passphrase"
# Soyez poli avec le shell !
exit 0


Attention
Je répète une dernière fois que la passphrase est en clair ; donc soyez prudent et raisonnable !
  • # Pourquoi utiliser une passphrase dans ce cas ?

    Posté par (page perso) . Évalué à 2.

    Il vaut sans doute mieux générer une clé sans passphrase et dont l'usage soit restreint par la configuration du serveur à l'aide, par exemple, de la directive command.

    Ou d'exploiter un outil comme cfengine ou puppet pour réaliser ce genre de choses.
  • # Commentaire supprimé

    Posté par . Évalué à 3.

    Ce commentaire a été supprimé par l'équipe de modération.

    • [^] # Re: ssh-agent, keychain, key_stash_file pour ssh-agent

      Posté par . Évalué à 2.

      Je n'ai vraiment pas tout suivi, mais ça, ça me paraît osé :

      ssh-agent >> "${SSH_AGENT_CACHE}" et SSH_AGENT_CACHE=/tmp/ssh_agent_eval_`whoami`

      Autrement dit, tu génères dans /tmp un fichier à nom prédictible ? Ou bien tu es encore au boot et ton /tmp n'est pas encore accessible aux utilisateurs ?

Suivre le flux des commentaires

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