Tengo algunos problemas con SSH KeychainIntegration en OS X Mavericks. He intentado hurgar en el sitio de soporte de Apple, pero no he visto a nadie que tenga mi problema. He visto a muchas personas que aparentemente no saben cómo usar SSH tan bien, así que decidí probar con otra comunidad.
Primero, mi configuración está funcionando. Puedo usar mi par de claves y ssh en los hosts cuando lo necesito, con mis credenciales almacenadas en caché en el agente. Puedo ver mis credenciales en caché a través de "ssh-add -l", como se esperaba. Se me solicita que ingrese mi contraseña mediante un cuadro de diálogo de estilo OS X, con una casilla de verificación que dice "Recordar contraseña en mi llavero". Por lo general, ignoro esta casilla de verificación, pero cuando la reviso, veo mi clave almacenada en el llavero. Sin embargo, esta clave almacenada en el llavero aparentemente nunca se usa, ya que tengo una contraseña. Al menos eso es lo que he aprendido de varias cosas que he leído. Cuando ingreso mi contraseña en el cuadro de diálogo, y la clave está en caché en el agente, me conecto con éxito, pero no antes de que me digan "Error al guardar la contraseña en el llavero". Ver este mensaje de error es lo que me llevó a investigar más a fondo; No me gusta recibir un error cada vez que me conecto.
Las cosas se ponen interesantes al mirar la página de manual SSH_CONFIG (5) . Existen dos opciones para manejar el llavero, específicas de Apple: AskPassGUI y KeychainIntegration. Puede alternar estos en ~ / .ssh / config, y al hacerlo arroja algunos resultados interesantes.
Si configura AskPassGUI en no, ya no se le solicitará un cuadro de diálogo estilo OS X, sino una línea de texto de entrada en su terminal. No es problema. Pero si hace esto, ssh-agent no almacenará en caché sus credenciales. Esto está claramente roto y es frustrante porque podría vivir fácilmente con el mensaje de texto si las credenciales se almacenaran en caché.
Al establecer KeychainIntegration en no, ssh arroja un error difícil, de la siguiente manera:
~/.ssh/config: line 11: Bad configuration option: KeychainIntegration
~/.ssh/config: terminating, 1 bad configuration options
Mi pregunta, simplemente, es esta: ¿hay alguna manera de desactivar realmente la integración de llavero OS X para SSH?
Respuestas:
Según el código fuente de la versión actual de SSH que se envía con Mavericks (ubicado aquí ), parece que la funcionalidad de la opción de configuración
KeychainIntegration
aún no se ha implementado. Estoy haciendo esta suposición basada en el contenido de openssh / readconf.h , que no hace referencia a laKeychainIntegration
opción. Sin embargo, hace referencia a laaskpassgui
opción. Verificar la estructura de "palabras clave" en ese archivo muestra que lakeychainintegration
opción no está presente (lo que a su vez implica queoBadOption
se devolvería el código operativo (NULL)).Otra pista que implica que la funcionalidad que desea no se implementa de la manera que especifica la página de manual es el archivo: openssh / keychain.c . El código fuente en realidad muestra que el
defaults
sistema (es decir, los archivos de la Lista de propiedades) se está utilizando para almacenar configuraciones relacionadasKeychainIntegration
. Específicamente, las líneas de lastore_in_keychain
referencia de función KeychainIntegration:Aquí está la
get_boolean_preference
función correspondiente . Tenga en cuenta que se utilizaCFPreferencesCopyAppValue
para obtener un booleano del identificador de aplicación "org.openbsd.openssh":Esto puede implicar que puede deshabilitar la
KeychainIntegration
funcionalidad por sí mismo mediante la ejecución de este comando predeterminado:defaults write org.openbsd.openssh KeychainIntegration -bool NO
o para configurarlo para todos los usuarios:
sudo defaults write /Library/Preferences/org.openbsd.openssh KeychainIntegration -bool NO
fuente
KeychainIntegration
aNO
través dedefaults
como sugirió.ssh
a continuación, se comporta como si me había puestoAskPassGUI
en~/.ssh/config
- no hay credenciales se almacenan en caché, y yo estoy se le pida la contraseña todo el tiempo. Menos que útil. Aún así, creo que ha respondido la pregunta, y la respuesta es simplemente: "Se puede desactivar, pero no está completamente implementado y probablemente no le gusten los resultados".