6 votes

Mac OS X Lion et sshpass

Je suis passé de Mac OS X Snow Leopard à Lion . J'ai utilisé plusieurs scripts avec sshpass mais après la mise à jour vers Lion, l'erreur suivante apparaît :

Permission denied, please try again.
debug1: read\_passphrase: can't open /dev/tty: Device not configured
debug1: permanently\_drop\_suid: 502
ssh\_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory

Je ne peux me connecter qu'avec sshpass (ou tapez le mot de passe manuellement). Pas de clé publique/privée. J'ai réinstallé MacPorts et sshpass.

Comment puis-je obtenir ssh-askpass ? Comment puis-je configurer /dev/tty ?

Salutations !

2voto

Jeff Burdges Points 1200

Vous devriez d'abord déposer une plainte auprès de l'administration du serveur, en faisant remarquer que l'authentification par clé publique est bien plus sûre qu'un simple mot de passe, mais je suppose que vous l'avez déjà fait et que vos administrateurs sont tout simplement des idiots.

Apple a malheureusement supprimé ssh-askpass lorsqu'il a intégré ses fonctionnalités dans ssh, scp et ssh-add. Il existe cependant un paquet SSHKeychain qui fournit un ssh-askpass avec une invite de mot de passe Cocoa semblable à celle d'Apple pour le paquet openssh de macports. Il devrait résoudre vos problèmes comme vous le souhaitez, peut-être même en définissant la variable SSH_ASKPASS pour vous.

Juste pour info, je déconseille généralement d'installer le paquet openssh macports lui-même parce qu'il casse l'invite de mot de passe Apple, mais une fois que vous avez installé SSHKeychain, macports offre généralement un openssh plus récent que celui d'Apple.

Il n'y a rien de mal à intégrer des mots de passe dans des scripts lorsque le serveur désactive l'authentification par clé publique, c'est-à-dire que s'il se soucie de la sécurité, il devrait réactiver les clés publiques. Il existe même des serveurs qui cassent intentionnellement sshpass. Vous pouvez accéder à de telles machines en utilisant l'attente suivante scripts :

#!/usr/bin/expect -f
set timeout -1
set send_human {.05 0.1 1 .07 1.5}
eval spawn $argv
match_max 100000
expect {
   -re "USERNAME@(\[0-9A-Za-z_\\-\\.\]+)'s password: "
     { sleep 0.1 ; send -- "PASSWORD\r" ; sleep 0.3 }
}
interact

Vous pouvez accélérer ce script en réduisant les délais de sommeil et d'envoi de l'homme.

0voto

Drag0n Points 21

J'ai également rencontré un problème similaire après la mise à niveau vers Mac OS X Lion. J'utilise Unison pour synchroniser un répertoire sur mon MacBook Pro avec mon serveur Linux, mais après la mise à jour, je ne pouvais plus me connecter. Le problème est que /usr/libexec/ssh-askpass est absent dans Lion. Pour corriger cela, vous pouvez aller à http://westergaard.eu/2011/07/printing-on-wi-from-mac-os-x-lion/?utm_source=rss&utm_medium=rss&utm_campaign=printing-on-wi-from-mac-os-x-lion . Vous pouvez y télécharger le fichier Printer-hack.zip. Il contient le fichier ssh-askpass que vous pouvez ensuite déplacer dans /usr/libexec/.

0voto

Brian Rogers Points 12160

La bonne façon de résoudre ce problème est de supprimer tous les éléments sshpass que vous avez installés et de vous fier à ce qu'Apple a déjà mis en place pour vous.

Par défaut, ssh-agent est déjà en cours d'exécution (en fait, il est prêt à s'exécuter une fois que vous l'utilisez, via launchd). Vous pouvez le vérifier depuis le terminal avec env|grep SSH qui devrait donner quelque chose comme SSH_AUTH_SOCK=/tmp/launch-7D4wfP/Listeners . Si ce n'est pas le cas, c'est que vous surchargez la valeur par défaut dans l'un de vos scripts de démarrage du shell scripts.

Ensuite, stockez la phrase de passe de votre clé SSH dans votre trousseau de clés avec ssh-add -K . Une fois que c'est fait, il chargera automatiquement votre clé dans votre ssh-agent lorsque cela sera nécessaire.

EDIT : J'ai oublié la partie "no pubkey auth" et ce que fait ssh-pass. Ok, essayez de mettre la variable d'environnement SSH_ASKPASS à un script qui imprime votre mot de passe. Cela fera que ssh exécutera ce script au lieu de ssh_askpass.

Il se peut que Lion soit plus strict en ce qui concerne les TTY et qu'il n'accepte pas l'environnement fourni par ssh-pass comme un véritable TTY. Si c'est le cas, ssh-pass devra être corrigé. Peut-être que compiler votre propre ssh peut aussi fonctionner.

0voto

V-Light Points 1913

OK, j'ai rencontré le même problème avec AIX. Le scénario était erratique, parfois la commande s'exécutait et parfois elle lançait la commande /dev/tty erreur.

J'ai contourné le problème en procédant comme suit : J'exporte SSH_ASKPASS à un shell script qui afficherait le mot de passe. puis exécutez ./sshpass -p $password $user@$node hostname . En procédant de la sorte, les cas dont se plaint ssh /dev/tty il engendre $SSH_ASKPASS et obtient le mot de passe.

J'espère que cela vous sera utile. Je suis tenté de penser qu'il s'agit plutôt d'un bug de sshpass, mais je n'ai bien sûr pas débogué davantage.

Santé Suriyan

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X