Question

Comment puis-je utiliser attendre l'envoi d'un mot de passe à une connexion ssh.

dire que le mot de passe était p @ ssword et la commande ssh était ssh moi@127.0.0.1

Qu'est-ce que je ferais si je m'attendais à ce qu'il soit saisi le mot de passe lorsqu'il est écrit

me@127.0.0.1 le mot de passe:
?

L'action appropriée consistant à utiliser une paire de clés SSH n'est pas une option, car je devrais utiliser ssh (scp) pour placer la clé sur le serveur, ce qui demanderait un mot de passe.

Était-ce utile?

La solution

J'ai toujours utilisé le "correct" solution, mais j’avais l'habitude de m'attendre dans d'autres situations.

Ici , j'ai trouvé la suggestion suivante:

#!/usr/local/bin/expect
spawn  sftp  -b cmdFile user@yourserver.com
expect "password:"
send "shhh!\n";
interact

Autres conseils

Ne serait-il pas plus simple d'utiliser l'authentification par clé publique et d'utiliser une clé sans phrase secrète?

Comme l’utilisateur de la machine source le fait pour créer une clé RSA

ssh-keygen -t rsa

Copiez maintenant ~ / .ssh / id_rsa.pub sur la machine cible et ajoutez-le au fichier allowed_keys de l'utilisateur cible

Votre meilleure façon d'avancer (à moins de vouloir devenir un expert en Tcl, ce qui serait ... inhabituel ... en 2009) consiste probablement à utiliser autoexpect . Voici la page de manuel:

http://expect.nist.gov/example/autoexpect.man.html

En bref, lancez autoexpect , lancez votre session ssh, terminez ce que vous devez faire, arrêtez-vous, puis battez votre clavier au-dessus du désordre résultant jusqu'à ce que ça fonctionne :) Je suppose vous n'avez besoin de rien de plus que d'un rapide bidouillage pour obtenir vos clés et ensuite, on dirait que vous connaissez déjà le score.

Et il y a cette question qui contient déjà un exemple proche de ce que vous recherchez.

Cygwin a autoexpect tout simplement pas dans le paquet bin. lancez setup.exe et recherchez expect et cochez la case source. vous verrez l’arbre résultant dans / usr / src et un répertoire expect / expect / examples. là-bas vit une copie du script autoexpect.

La solution de clé ne fonctionnera pas ... car les clés ne doivent être lisibles que par la personne qui exécute ssh. Sous xp, vous ne pouvez pas créer de structure de clé avec les autorisations appropriées. Donc, SSH ne les lira pas. Cela a peut-être changé, mais la dernière fois que j’ai vérifié qu’il ne fonctionnait toujours pas.

Je suis presque sûr qu'il n'est pas possible de faire ce que vous essayez de faire. La plupart des applications * nix qui demandent un mot de passe lu directement par le téléscripteur, et non stdin, vous ne pouvez donc pas y insérer le mot de passe. Comme d'autres l'ont déjà mentionné, vous pouvez configurer SSH pour ne pas demander de mot de passe, comme expliqué ici .

Après avoir été voté sans raison apparente, je suis allé un peu plus à la recherche de la commande expect et j'ai découvert qu'il possède une commande send_tty qui envoie à / dev / tty au lieu de stdin, ce qui pourrait en fait faire ce que vous voulez ... Je n’étais pas au courant de cette fonctionnalité. Je recommande néanmoins de mettre la clé sur le serveur, cependant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top