OSX ssh-agent: ¿no se pega la contraseña y hay problemas con PKCS#8?

Utilizo ssh en mi máquina y configuré una frase de contraseña larga no amigable para los humanos que se guarda en mi administrador de contraseñas. Lo que me vuelve loco cada vez es que no puedo pegar en la ventana que se muestra a continuación. Conozco la Remember password in my keychainopción y la uso. Aunque a veces tengo que introducir uno nuevo. ¿Por qué no puedo pegar en un campo de contraseña?

Lo mismo ocurre con el cuadro de diálogo que aparece al conectar discos cifrados.

ventana del agente ssh

Algunas actualizaciones:

  1. Descubrí cómo puedo eludir el cuadro de diálogo: simplemente use ssh-add -K ~/.ssh/id_rsay luego puedo pegar la frase de contraseña en la terminal.
  2. Como mencionó mattmcmanus, mi clave está encriptada usando pkcs8la cual se rompió en el agente ssh de Yosemite. Esto no está relacionado con el problema anterior, pero se me ocurrió al mismo tiempo (lea aquí ).
  3. usando ssh-add aún no soluciona esto para discos encriptados.
Debe aceptar una de las buenas respuestas a continuación. También debe evitar hacer varias preguntas en una sola publicación.
@AlainO'Dea Primero, sí, debería, esta es una vieja pregunta y me olvidé de ella. Sin embargo, para lo segundo: en el momento de preguntar, no estaba claro que surgiría el segundo problema (PKCS roto), consulte el historial de edición.

Respuestas (6)

  1. El cuadro de diálogo para ssh-agent se puede eludir agregando la clave en la consola/terminal: ssh-add ~/.ssh/id_rsa. A continuación, puede pegar la contraseña en el terminal. Además, agregar la -Kopción para ssh-addguardarlo en el llavero según el comentario de Oliver Lacan.
  2. Como dijo mattmcmanus, el id_rsacifrado que usa PKCS parece estar roto en OSX Mavericks ssh-agent. La solución rápida es descifrar el archivo de claves y volver a cifrarlo con el procedimiento ssh estándar (método de derivación de claves: MD5...):

mv id_rsa id_rsa.pkcs
openssl rsa -in id_rsa.pkcs -out id_rsa
# enter passphrase to decrypt
chmod 0600 id_rsa
ssh-keygen -f id_rsa -p
# enter passphrase to encrypt again
Si bien la respuesta de joni es excelente, recomendaría ssh-add -K ~/.ssh/id_rsaqué "Guardar frases de contraseña en su llavero" según ssh-add --help. Evitará que tenga que volver a ejecutar ssh-addcada vez que abra una nueva pestaña de shell o cuando reinicie su máquina.

¿Es una clave PKCS#8 y estás en Mavericks? Si es así, eso parece estar completamente reventado. No estoy seguro de que haya una solución todavía.

¿Por qué debería ser esto? El problema hasta ahora es que el campo de contraseña en el cuadro de diálogo no acepta pegar. Esto ya existía en 10.8, pero debido a la actualización a 10.9 tengo que ingresar la frase de contraseña nuevamente.
OK, parece que tienes razón... mira mi propia respuesta.

En Mac OS X El Capitan, el comando ssh-add puede hacer esto con la opción -K :

$ ssh-add -K ~/.ssh/id_rsa
Enter passphrase for /Users/your.username/.ssh/id_rsa:

Puede pegar su contraseña en este indicador con ⌘-V .

Una sesión para esto se ve así:

$ ssh-add -K ~/.ssh/id_rsa
Enter passphrase for /Users/your.username/.ssh/id_rsa:
Passphrase stored in keychain: /Users/your.username/.ssh/id_rsa
Identity added: /Users/your.username/.ssh/id_rsa (/Users/your.username/.ssh/id_rsa)

Extracto relevante de SSH-ADD(1) presentado con man ssh-add :

-K Al agregar identidades, cada frase de contraseña también se almacenará en su llavero. Al eliminar identidades con -d, cada frase de contraseña se eliminará de su llavero.

NOTA DE INFOSEC : su contraseña no se mostrará en el shell, pero estará expuesta a todas las aplicaciones en ejecución a través del portapapeles. Una solución de autotipo sería más segura.

Puede ejecutar un script como este en AppleScript Editor:

tell application "System Events" to tell process "SecurityAgent"
    set value of text field 2 of scroll area 1 of group 1 of window 1 to "pa55word"
    click button 2 of group 2 of window 1
end tell
gracias, esto ayudará con los diálogos de 'discos encriptados'. Pero, ¿por qué Apple deshabilitó este campo para pegar?
Práctico, pero sí, no creas que esto resuelve el problema de PKCS#8, donde incluso si ingresas la contraseña correcta, dice frase de contraseña incorrecta.
No tiene sentido. Ahora su contraseña ultrasecreta está abierta para todos. Es por eso que el TS utiliza un administrador de contraseñas para tener sus contraseñas centralizadas y altamente protegidas.
No funciona en El Capitán. Primero, solicita que el Editor de secuencias de comandos obtenga Control de asistencia System Events got an error: Script Editor is not allowed assistive access.una vez que esté permitido en Preferencias del sistema | Seguridad y privacidad que obtengoSystem Events got an error: Can’t get window 1 of process "SecurityAgent". Invalid index.

Yo tuve el mismo problema. Después de encontrar esta pregunta, seguí buscando y encontré una respuesta en otro lugar. Esta es una pregunta más antigua, pero no tiene respuestas aceptadas y todavía ocupa un lugar destacado en las listas de búsqueda. (no estoy seguro de la etiqueta de intercambio de pila en eso).

RE no puede copiar/pegar: aparentemente es por diseño. La intención es evitar todo acceso al campo desde el portapapeles para evitar que un programa malicioso raspe las casillas de contraseña. Creo que debería permitirse pegar (y no cortar), pero tal vez haya alguna razón técnica.

Para las cosas de ssh-agent, a partir de (al menos) Yosemite, la -Kopción ssh-add -K ~/.ssh/blahhace lo que desea: escriba la contraseña una vez, se almacena en su llavero y ssh-agent se desbloqueará de forma transparente para usted. Para tratar de estar más seguro, coloco mis frases de contraseña ssh en un llavero separado que se bloquea periódicamente.

¿Alguna posibilidad de que puedas compartir un enlace a la respuesta que encontraste?
¡Lo siento por eso! Para las cosas de ssh-agent, me topé con developer.apple.com/library/mac/documentation/Darwin/Reference/…

El uso de brew openssl y openssh soluciona el problema.

brew update
brew install openssl
brew link openssl --force
brew install openssh

# confirm correct bins are being used
# both should be located in /usr/local/bin
which openssl
which openssh

# add key back to keychain
ssh-add ~/.ssh/id_rsa

No estoy seguro de si la vinculación forzada de openssl rompe algo en Mavricks. Hasta ahora, no he notado ningún problema.

No hay (más una) brewfórmula para openssh.
Todavía hay sin brew tap homebrew/dupesembargo. Dicho esto, estos pasos no parecieron resolver este problema para mí.
@simple10 Esta respuesta proporciona poco o ningún valor. Al menos debe proporcionar la versión de openssl/opensh que soluciona el problema. Además, explique por qué lo haría.