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.