Mac OS X Lion y sshpass

6

He actualizado de Mac OS X Snow Leopard a Lion . Utilicé varios scripts con sshpass pero después de actualizar a Lion aparece el siguiente error:

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

Solo puedo conectarme con sshpass (o escribir la contraseña manualmente). No hay forma de clave pública / privada. He reinstalado MacPorts y sshpass.

¿Cómo puedo obtener ssh-askpass ? ¿Cómo puedo configurar / dev / tty ?

Saluda!

    
pregunta TheFox 22.07.2011 - 15:07

4 respuestas

2

Primero debe presentar una queja ante la administración del servidor, observando que la autenticación de clave pública es mucho más segura que simplemente una contraseña, pero asumiré que ya lo hizo, y sus administradores son simplemente idiotas.

Lamentablemente Apple eliminó ssh-askpass cuando integraron su funcionalidad en ssh, scp y ssh-add. Sin embargo, hay un paquete SSHKeychain que proporciona un ssh-askpass con una solicitud de contraseña Cocoa similar a Apple para el paquete openssh de macports. Debería solucionar sus problemas de la forma que desee, tal vez incluso configurando la variable SSH_ASKPASS para usted.

Solo para tu información, por lo general recomiendo que no instales el paquete openssh macports porque rompe la solicitud de tu contraseña de Apple, pero una vez que hayas instalado los macports SSHKeychain, generalmente ofrece un openssh más reciente que Apple.

No hay nada de malo en incrustar contraseñas en los scripts cuando el servidor deshabilita la autenticación de clave pública, es decir, si les importaba la seguridad, deberían volver a habilitar las claves públicas. Incluso hay servidores que intencionalmente rompen sshpass. Puede acceder a dichas máquinas utilizando el siguiente script de expectativa:

#!/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

Puedes acelerar este script reduciendo los retrasos de sleeps y send_human.

    
respondido por el Jeff Burdges 11.11.2011 - 16:26
0

También me encontré con un problema similar después de actualizar a Mac OS X Lion. Utilizo Unison para sincronizar un directorio en mi MacBook Pro con mi servidor Linux, pero después de la actualización ya no pude conectarme. El problema es que / usr / libexec / ssh-askpass está ausente en Lion. Para corregir esto, puede ir a enlace . Allí puedes descargar el archivo Printer-hack.zip. Contiene el archivo ssh-askpass que luego puede mover a / usr / libexec /.

    
respondido por el dataB0b 27.07.2011 - 01:20
0

La forma correcta de solucionar este problema es eliminar todas las cosas sshpass que instaló y solo confiar en lo que Apple ya ha configurado para usted.

De forma predeterminada, ssh-agent ya se está ejecutando (en realidad está listo para ejecutarse una vez que lo use, a través de launchd). Puedes verificar esto desde el terminal con env|grep SSH que debería regresar con algo como SSH_AUTH_SOCK=/tmp/launch-7D4wfP/Listeners . Si no se ve así, entonces todavía estás anulando el valor predeterminado en uno de tus scripts de inicio de shell.

Luego, almacene la contraseña de su clave SSH en su llavero con ssh-add -K . Una vez hecho esto, cargará automáticamente su clave en su agente ssh cuando sea necesario.

EDITAR: Vaya, me he perdido el bit "no pubkey auth" y lo que hace ssh-pass. Bien, intente configurar la variable de entorno SSH_ASKPASS en un script que imprima su contraseña. Eso hará que ssh ejecute ese script en lugar de ssh_askpass.

Lo que podría estar sucediendo es que Lion puede ser más estricto con el TTY y no aceptará el entorno que proporciona ssh-pass como un TTY real. Si ese es el caso, entonces ssh-pass tendrá que ser arreglado. Quizás compilar tu propio ssh también puede funcionar.

    
respondido por el w00t 24.08.2011 - 12:29
0

Bien, también enfrenté este mismo problema con AIX. El escenario era errático, a veces el comando se ejecutaba y otras veces lanzaba el error /dev/tty .

Lo resolví haciendo lo siguiente: Exporto SSH_ASKPASS a un script de shell que haría eco de la contraseña. y luego ejecute ./sshpass -p $password $user@$node hostname . Al hacer esto, los casos en que ssh se quejan de /dev/tty generan $SSH_ASKPASS y obtienen la contraseña.

Espero que esto sea útil. Estoy tentado a pensar que esto es más un error de sshpass, pero, por supuesto, no he depurado más.

Saludos Suriyan

    
respondido por el Suriyan Ramasami 13.09.2011 - 18:19

Lea otras preguntas en las etiquetas