Je souhaite utiliser ma clé SSH protégée par mot de passe lorsque vous effectuez des tâches avec parallel-ssh
(et les outils associés). Cependant, je ne peux pas faire fonctionner cela.
Toute la documentation, concernant parallel-ssh
, montre que je devrais pouvoir utiliser --askpass
ou -A
faire ceci:
-A
--askpass
Prompt for a password and pass it to ssh. The password may be
used for either to unlock a key or for password authentication. The
password is transferred in a fairly secure manner (e.g., it will not
show up in argument lists). However, be aware that a root user on
your system could potentially intercept the password.
Cependant, lorsque j'entre la phrase secrète de ma clé, cela ne fonctionne pas:
$ parallel-ssh --hosts=machines --user=my_user --askpass \
--timeout=0 --inline -v 'sudo apt-get update'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 09:59:36 [FAILURE] amritiii Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[2] 09:59:37 [FAILURE] gbdev Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[3] 09:59:37 [FAILURE] code Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[4] 09:59:37 [FAILURE] apollo Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[5] 09:59:37 [FAILURE] odin Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[6] 09:59:37 [FAILURE] hathor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[7] 09:59:37 [FAILURE] ldap Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[8] 09:59:37 [FAILURE] thor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[9] 09:59:37 [FAILURE] bioserver Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
J'ai confirmé que ma clé SSH et ma phrase de passe fonctionnent sur chacune des machines, donc je n'ai aucune idée de comment faire fonctionner cela.
ssh
key-authentication
parallel-ssh
Nathan S. Watson-Haigh
la source
la source
parallel-ssh
etpssh
sont en effet les mêmes.Réponses:
En supposant que
parallel-ssh
etpssh
sont équivalents, alors oui, ce que vous essayez de faire devrait fonctionner très bien avec le passage de la phrase de passe lors de l'utilisation du-A
commutateur.Exemple
Voici un exemple où je me connecte à 2 systèmes différents,
host1
ethost2
. J'utilise le-l
commutateur pourpssh
fournir un utilisateur par défaut àroot
. Cependant,host2
je remplace cela dans le-H
commutateur en spécifiant le nom d'hôte commeuser1@host2
.Lorsque les travaux ci - dessus , vous remarquerez la sortie de la commande que je cours,
echo "hi"
.Votre problème
Le problème que vous rencontrez avec une phrase secrète sur votre paire de clés SSH est dû à un bogue. Voici le bogue intitulé: Problème 80: Vous ne passez pas la phrase secrète? . Le 4ème commentaire de ce problème montre un patch:
extrait
Références
la source
parallel-ssh
etpssh
sont en effet les mêmes. Je ne demandais pas si c'était possible - la documentation indique clairement que c'est possible. J'ai du mal à le faire fonctionner car il est documenté.parallel-ssh
ne savent toujours pas comment détecter au mieux la question d'invite de mot de passe et donc répondre avec le mot de passe / la phrase entré, je vais m'en tenir à ma méthode de trousseau. Je ne voudrais pas que ma phrase secrète soit révélée par inadvertance à la mauvaise invite de questions.parallel-ssh
transmettre la phrase secrète àSSH
. Cependant, pour ceux qui rencontreront cette question à l'avenir, ce bogue peut avoir été corrigé ou vous pouvez choisir de ne pas modifier leaskpass_client.py
fichier. Dans les deux cas, vous pouvez contourner ce problème en utilisant lakeychain
réponse ( unix.stackexchange.com/a/128998/57414 ) ou la réponse ssh-agent ( unix.stackexchange.com/a/129022/57414 )J'ai réussi à faire fonctionner cela en installant
keychain
plutôt qu'en corrigeant manuellement le bogue à l'origine de mes problèmes.Installer et exécuter manuellement le trousseau
Exécuter la commande sans entrée de mot de passe / phrase de passe
Maintenant, cette fois, je n'ai pas besoin de ma phrase secrète lors de l'appel
parallel-ssh
car le trousseau se charge de l'authentification:Exécuter le trousseau à la connexion
Plutôt que d'avoir à exécuter manuellement et à ajouter votre clé au trousseau, ajoutez simplement ce qui suit à la fin de votre
~/.bash_profile
:Cela garantit que lors de votre première connexion, après un redémarrage, vous êtes invité à saisir la phrase de passe de votre clé. Votre clé restera alors dans le trousseau jusqu'au prochain redémarrage ou vous effacerez le trousseau manuellement.
Cron Jobs utilisant le trousseau
Avec ce qui précède entré dans votre
~/.bash_profile
fichier, vous pouvez profiter du fait que votre clé est maintenant stockée dans le trousseau en achetant le même fichier avant l'exécution de votre cronjob. Par exemple, j'ai un script de sauvegarde qui s'exécute à 21h00 chaque nuit et copie des trucs sur un ordinateur distant via SSH. Ceci est une entrée dans mon crontab (crontab -e
):la source
Utilisez ssh-agent pour vous authentifier automatiquement (avec un nom de shell comme argument pour que les variables d'environnement de l'agent soient définies dans ce nouveau shell). Ajoutez la clé avec ssh-add et tapez votre mot de passe une seule fois.
la source