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 Raphaël SurcouF (site web personnel) . Évalué à 2.
Ou d'exploiter un outil comme cfengine ou puppet pour réaliser ce genre de choses.
# Commentaire supprimé
Posté par Anonyme . É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 Laurent Morel . Évalué à 2.
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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.