17 votos

¿Cómo puedo desactivar SSH KeychainIntegration en OS X Mavericks?

Estoy teniendo 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. Yo he visto un montón de personas que aparentemente no sabe cómo usar SSH bien, así que me decidí a probar otra comunidad.

En primer lugar, mi configuración es de trabajo. Soy capaz de utilizar mi par de claves ssh y a los hosts que necesitan para, con mis credenciales se almacenan en caché en el agente. Yo soy capaz de ver mis credenciales almacenadas en caché a través de "ssh-add -l", como se esperaba. Me solicitan para ingresar mi contraseña por una de OS X de diálogo estilo, con una casilla de verificación que dice "Recordar contraseña en mi llavero". Me suelen ignorar esta opción, pero cuando me registre, me hacen ver mi clave almacenada en el llavero. Esta clave se almacena en el llavero es aparentemente nunca se utiliza, sin embargo, ya que tengo una contraseña en él. Al menos eso es lo que he recogido a partir de varias cosas que he leído. Cuando yo ingrese mi contraseña en el cuadro de diálogo, y la clave se almacena en caché en el agente, he conseguido conectar, pero no antes de que se le dijo "Guardar contraseña para llavero error". Ver este mensaje de error es lo que me llevó a investigar más, no me gusta llegar un error cada vez que me conecto.

Las cosas se ponen interesantes cuando se mira en su página man SSH_CONFIG(5). Dos opciones para tratar con el llavero de existir, específica para Apple: AskPassGUI, y KeychainIntegration. Eres capaz de cambiar estas en ~/.ssh/config, y haciendo así que los rendimientos de algunos resultados interesantes.

Configuración de AskPassGUI a no, usted tendrá que ya no se le pedirá con un OS X de diálogo estilo, en lugar de una entrada de línea de texto en su terminal. No hay problema. Pero si usted hace esto, entonces ssh-agent no almacenar en caché las credenciales. Esto es claramente roto, y frustrante, porque yo podría vivir con el mensaje de texto, si las credenciales se almacenan en caché.

Configuración de KeychainIntegration a no, ssh lanza un error de disco duro, 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 una manera de desactivar OS X Llavero de Integración por SSH?

6voto

Jonathan Sampson Puntos 121800

Basado en el código fuente de la versión actual de SSH que envío con Mavericks (se encuentra aquí), parece que la funcionalidad de la opción de configuración KeychainIntegration aún no ha sido implementado. Estoy haciendo esta hipótesis basada en el contenido de openssh/readconf.h, que no hace referencia el KeychainIntegration opción. Lo hace, sin embargo, hacer referencia a la askpassgui opción. La comprobación de las "palabras clave" struct en ese archivo, en efecto, que el keychainintegration opción no está presente (que a su vez implica que el oBadOption (NULL) código de operación sería devuelto).

Otro indicio de lo que implica que la funcionalidad que usted desea no está implementado en la forma en que el hombre de la página especifica es el archivo: openssh/llavero.c. El código fuente realidad muestra que el defaults sistema (es decir, la Propiedad de la Lista de archivos) que se utiliza para almacenar los ajustes relacionados con la KeychainIntegration. Específicamente, las líneas de la store_in_keychain de referencia de la función KeychainIntegration:

/* Bail out if KeychainIntegration preference is -bool NO */
if (get_boolean_preference("KeychainIntegration", 1, 1) == 0) {
    fprintf(stderr, "Keychain integration is disabled.\n");
    goto err;
}

Aquí es el correspondiente get_boolean_preference función. Tenga en cuenta que el uso de CFPreferencesCopyAppValue para obtener un valor booleano de la "org.openbsd.openssh" identificador de aplicación:

#if defined(__APPLE_KEYCHAIN__)

static int get_boolean_preference(const char *key, int default_value,
int foreground)
{
int value = default_value;
CFStringRef keyRef = NULL;
CFPropertyListRef valueRef = NULL;

keyRef = CFStringCreateWithCString(NULL, key, kCFStringEncodingUTF8);
if (keyRef != NULL)
    valueRef = CFPreferencesCopyAppValue(keyRef,
        CFSTR("org.openbsd.openssh"));
if (valueRef != NULL)
    if (CFGetTypeID(valueRef) == CFBooleanGetTypeID())
        value = CFBooleanGetValue(valueRef);
    else if (foreground)
        fprintf(stderr, "Ignoring nonboolean %s preference.\n", key);

if (keyRef)
    CFRelease(keyRef);
if (valueRef)
    CFRelease(valueRef);

return value;
}

#endif

Esto podría implicar que se puede deshabilitar el KeychainIntegration funcionalidad mediante la realización de algunos valores comando:

sudo defaults write /Library/Preferences/org.openbsd.openssh KeychainIntegration -bool NO

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X