Un collègue (merci, Maxime) m'a fait découvrir sshpass
qui permet d'automatiser / scripter une connexion SSH par mot de passe. Paquet logiciel du même nom dans Debian.
Le mot de passe est transmis à sshpass
en argument ou dans un fichier ou dans une variable d'environnement ou dans un descripteur de fichier.
Au final, sshpass
fonctionne comme expect
: il lance ssh
(fork(), exec()), il lit la sortie standard, quand ssh demande le mot de passe, il l'envoie sur l'entrée standard. « -P » permet d'ailleurs de changer la chaîne de caractères à laquelle sshpass
réagit.
Ça signifie aussi que toute demande imprévue de ssh
est bloquante genre vérification de l'empreinte de la clé du serveur ou demande de la passphrase d'une clé SSH si l'on a une directive « IdentityFile » dans son ssh_config. « -v » permet de visualiser ce qui bloque.
Je préfère l'authentification par clé SSH sans passphrase dédiée à un compte utilisateur sur le serveur lui-même dédié à un script / à un ensemble de scripts d'un même périmètre / giron (cela permet une traçabilité des accès sans contrainte excessive) avec droits d'accès limités (droits fichiers ou droits sudo
précis), mais c'est intéressant de savoir que sshpass
existe pour les cas où l'auth par clé n'est pas en place.