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à.
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
ah oui oops, on s’est emballé 🙂
oui, pas faux. Très bonne idée 🙂
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…
@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 /