web-dev-qa-db-fra.com

Utiliser s'attendre à passer un mot de passe à ssh

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.

37
Malfist

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
71
max

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

5
Paul Dixon

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.

4
Martin Carpenter

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.

0
DJJ

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.

0
Mikey B