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

37

Uso ssh en mi máquina y configuré una frase de contraseña larga que no es amigable para los humanos y que está guardada 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. Sin embargo, a veces tengo que ingresar uno nuevo. ¿Por qué no puedo pegar en un campo de contraseña?

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

ventana ssh-agent

Algunas actualizaciones:

  1. Descubrí cómo puedo eludir el diálogo: solo uso ssh-add -K ~/.ssh/id_rsa, y luego puedo pegar la frase de contraseña en el terminal.
  2. Como mencionó mattmcmanus, mi clave está encriptada usando la pkcs8que 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. el uso ssh-add aún no soluciona esto para discos cifrados.
joni
fuente
Debe aceptar una de las buenas respuestas a continuación. También debe evitar hacer múltiples preguntas en una sola publicación.
Alain O'Dea
1
@ AlainO'Dea Primero, sí debería, esta es una vieja pregunta y la olvidé. Sin embargo, para la segunda cosa: al momento de preguntar, no estaba claro que surgiría el segundo problema (PKCS roto), vea el historial de edición.
joni

Respuestas:

22
  1. El diálogo para ssh-agent se puede evitar mediante la adición de la llave en la consola / terminal de: ssh-add ~/.ssh/id_rsa. Luego puede pegar la contraseña en el terminal. Además, agregar la -Kopción a ssh-addlo guardará en el llavero según el comentario de Oliver Lacans.
  2. Como dijo mattmcmanus, el id_rsacifrado con 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 clave: 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
joni
fuente
3
Si bien la respuesta de joni es excelente, recomendaría ssh-add -K ~/.ssh/id_rsa"Guardar frases de contraseña en su llavero" según ssh-add --help. Le evitará tener que volver a ejecutar ssh-addcada vez que abra una nueva pestaña de shell o cuando reinicie su máquina.
Olivier Lacan
2

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

mattmcmanus
fuente
1
¿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.
joni
OK, parece que tienes razón ... mira mi propia respuesta.
joni
2

En Mac OS X El Capitan, el comando ssh-add puede hacer esto con una 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 mensaje 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.

Alain O'Dea
fuente
1

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
Lri
fuente
1
gracias, esto ayudará a los cuadros de diálogo 'discos cifrados'. Pero, ¿por qué Apple deshabilitó este campo para pegar?
joni
Práctico, pero sí, no creo que esto resuelva el problema PKCS # 8, donde incluso si ingresa la contraseña correcta, dice una frase de contraseña incorrecta.
Bob Aman
No tiene sentido. Ahora su contraseña altamente secreta 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.
whaefelinger
1
No funciona en El Capitan. Primero, pide que el Editor de scripts obtenga control de asistencia una System Events got an error: Script Editor is not allowed assistive access. vez que esté permitido en Preferencias del sistema | Seguridad y privacidad que reciboSystem Events got an error: Can’t get window 1 of process "SecurityAgent". Invalid index.
Alain O'Dea
1

Yo tuve el mismo problema. Después de encontrar esta pregunta, seguí buscando y encontré una respuesta en otra parte. Esta es una pregunta anterior, pero no tiene respuestas aceptadas y aún ocupa un lugar destacado en las listas de búsqueda. (no estoy seguro de la etiqueta de cambio 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 los cuadros 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, pongo mis frases de contraseña ssh en un llavero separado que se bloquea periódicamente.

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

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 si forzar el enlace openssl rompe algo en Mavricks. Hasta ahora, no he notado ningún problema.

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