Windows Git Bash sshpass
Par PlaceOweb le samedi, septembre 28 2019, 10:45 - Système - Lien permanent
Vous n'avez pas su/voulu mettre en place l'authentification par clé RSA pour SSH (Secure SHell), vous pouvez alternativement injecter le mot de passe avec la commande sshpass.
Sous Linux, côté client, on installerait le package sshpass.
Mais la commande sshpass n'étant nativement pas présente sous git bash, on va rajouter le binaire sshpass à notre environnement :
Une fois Git Bash for Windows installé, télécharger la dernière version de SSHpass (sshpass-1.06-1-x86_64.pkg.tar.xz) pour Windows depuis le site de MSYS2, plus précisément depuis leur dépôt : http://repo.msys2.org/msys/x86_64/
Décompresser l'archive .tar.xz téléchargée avec 7-Zip, et copier le fichier sshpass.exe présent dans le répertoire usr\bin\ de l’archive vers le répertoire C:\Program Files\Git\mingw64\bin
La commande est maintenant disponible dans Git Bash :
ryzen@RYZEN MINGW64 ~
$ sshpass
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename Take password to use from file
-d number Use number as file descriptor for getting password
-p password Provide password as argument (security unwise)
-e Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-P prompt Which string should sshpass search for to detect a password prompt
-v Be verbose about what you're doing
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
Ensuite, comme l'indique How to Execute Linux Commands on Remote System over SSH - Limitation of public-private key authentication
Méthode 1 : Mot de passe en tant qu'argument
Nous pouvons fournir un mot de passe comme argument en utilisant l'option –p :
$ sshpass -p 'mon-mot-de-passe' ssh -p 22 monuser@150.80.40.10
Méthode 2 : Mot de passe depuis un fichier
sshpass peut lire le mot de passe depuis un fichier normal en utilisant l'option -f :
$ echo "mon-mot-de-passe" > fichier-password.txt
$ sshpass -f fichier-password.txt ssh -p 22 monuser@150.80.40.10
Méthode 3 : Mot de passe depuis une variable d’environnement
Nous pouvons fournir un mot de passe à partir d'une variable d'environnement en utilisant l'option -e :
$ export SSHPASS="mon-mot-de-passe"
$ sshpass -e ssh -p 22 monuser@150.80.40.10