Comment puis-je utiliser s'attendre à envoyer un mot de passe à une connexion ssh.
dire que le mot de passe était p @ ssword et la commande ssh était ssh [email protected]
Que dois-je faire avec m'attendre à ce qu'il saisisse le mot de passe quand il dit
mot de passe de [email protected]:
?
L'action appropriée d'utiliser une paire de clés SSH n'est pas une option car je devrais utiliser ssh (scp) pour mettre la clé sur le serveur, ce qui demanderait un mot de passe.
J'ai toujours utilisé la solution "appropriée", mais j'ai utilisé l'attente dans d'autres situations.
Ici J'ai trouvé la suggestion suivante:
#!/usr/local/bin/expect
spawn sftp -b cmdFile [email protected]
expect "password:"
send "shhh!\n";
interact
Ne serait-il pas plus facile d'utiliser l'authentification par clé publique et d'utiliser une clé sans phrase secrète?
Comme l'utilisateur sur 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 authorized_keys de l'utilisateur cible
Votre moyen le plus rapide (sauf si vous voulez devenir un expert Tcl, ce qui serait ... inhabituel ... en 2009) est probablement d'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 la détection automatique et battez votre clavier sur le désordre résultant jusqu'à ce qu'il fonctionne :) Je suppose que vous n'avez pas besoin rien de plus qu'un simple hack pour faire trier vos clés et puis, il semble que vous connaissiez déjà le score avec cela.
Et il y a cette question qui contient déjà un exemple proche de ce que vous cherchez.
Cygwin n'a aucune attente automatique dans le paquet bin. exécutez setup.exe et recherchez expect et cochez la case source. vous verrez l'arbre résultant dans/usr/src et là-dedans il y a un répertoire expect/expect/examples. là vit une copie du script autoexpect.
La solution de clé ne fonctionnera pas ... car les clés doivent être lisibles uniquement par la personne exécutant ssh. Sur xp, vous ne pouvez pas créer de structure de clés avec les autorisations appropriées. Donc ssh ne les lira pas. Cela a peut-être changé, mais j'ai vérifié que cela ne fonctionnait toujours pas.