SFTP : mot de passe en ligne de commande

Petit souci du jour : utiliser sftp en ligne de commande, avec un mot de passe, en mode batch, MAIS sans passer par une authentification par clef. Sachant que sftp n’accepte pas de mot de passe en ligne de commande (ni via une redirection depuis STDIN).

Pourquoi donc me direz-vous ? simplement parce-que dans l’éventualité où faire bouger le prestataire en face de vous (celui qui héberge le serveur SSH) coûterait trop d’énergie, on va supposer qu’on ne peut pas facilement faire avaler notre clef publique à l’hébergeur du serveur SSH.

Bref, la commande traditionnelle est :

sftp utilisateur@serveur
Connecting to serveur...
utilisateur@serveur's password:
sftp>

J’ai trouvé une méthode simple : utiliser le client SFTP de « PuTTY ».
Je pensais au départ utiliser celui de « lftp » et sauvegarder ma connexion (avec mot de passe) en bookmark, mais comme mon login dans l’histoire est un utilisateur de domaine windows (ouais, le serveur SSH en face est sous windows O_o), y’a un \ dans le login et même en le doublant, lftp semble mal le digérer, ben j’étais aussi bloqué.

Bref, en installant les outils de PuTTY :

aptitude install putty-tools

On peut alors taper :

psftp -pw mon_pass utilisateur@serveur
Using username "utilisateur".
Remote working directory is /
psftp>

Attention : le mot de passe est en clair dans la ligne de commande, donc dans les processus etc etc. Donc c’est pas idéal comme condition.
Enfin, je n’ai pas mis le paramètre -b pour mon batch, car ce n’est pas le propos là.

6 comments

  1. Salut,

    Une solution simple pour ne pas faire apparaitre le pass est de l’écrire dans un fichier puis de l’invoquer avec les caracteres « 

    au lieu de « psftp -pw mon_pass utilisateur@serveur »

    tu as « psftp -pw `cat monfichierpass` utilisateur@serveur »

    avec le password dans le fichier monfichierpass

  2. Une autre possibilité est d’utiliser Pexpect (ou expect, mais je préfère Python a Tcl/Tk) qui permet de faire cela pour n’importe quel cas de figure. J’ai utilisé Pexpect pour scripter des sessions telnet vers un serveur smtp.
    Cette méthode peux résoudre partiellement le problème du mot de passe affiché en clair : on peux le chiffrer pour le stocker sur le disque et il ne sera pas visible dans la liste des process, en revanche il y a des chances qu’il circule en clair sur le réseau…

  3. @jahman : non, ton mot de passe sera toujours visible en clair dans les process.
    par exemple :
    echo « mon_mdp_secure » > foo.txt
    grep -ri `cat foo.txt` /

    et dans un autre terminal :
    ps -ef | grep grep
    strider 6086 6026 40 23:51 pts/2 00:00:12 grep –color=auto -ri mon_mdp_secure /

  4. Ping : Michauko : SFTP : mot de passe en ligne de commande | Le Techno Mag

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.