Comment puis-je désactiver SSH KeychainIntegration dans OS X Mavericks?


18

J'ai des problèmes avec SSH KeychainIntegration dans OS X Mavericks. J'ai essayé de fouiller le site d'assistance d'Apple, mais je n'ai vu personne rencontrer mon problème. J'ai vu beaucoup de gens qui ne savent apparemment pas bien utiliser SSH, alors j'ai décidé d'essayer une autre communauté.

Tout d'abord, ma configuration fonctionne. Je peux utiliser ma paire de clés et ssh pour les hôtes selon mes besoins, avec mes informations d'identification mises en cache dans l'agent. Je peux voir mes informations d'identification mises en cache via "ssh-add -l", comme prévu. Je suis invité à entrer mon mot de passe par une boîte de dialogue de style OS X, avec une case à cocher qui dit "Mémoriser le mot de passe dans mon trousseau". J'ignore généralement cette case à cocher, mais lorsque je la coche, je vois ma clé stockée dans le trousseau. Cette clé stockée dans le trousseau n'est apparemment jamais utilisée, cependant, car j'ai un mot de passe dessus. C'est du moins ce que j'ai glané de diverses choses que j'ai lues. Lorsque j'entre mon mot de passe dans la boîte de dialogue et que la clé est mise en cache dans l'agent, je me connecte avec succès, mais pas avant qu'on me dise "L'enregistrement du mot de passe dans le trousseau a échoué". Voir ce message d'erreur m'a amené à approfondir mes recherches; Je n'aime pas recevoir une erreur à chaque connexion.

Les choses deviennent intéressantes quand on regarde la page de manuel SSH_CONFIG (5) . Il existe deux options pour gérer le trousseau, spécifiques à Apple: AskPassGUI et KeychainIntegration. Vous pouvez les basculer dans ~ / .ssh / config, et cela donne des résultats intéressants.

En définissant AskPassGUI sur non, vous ne serez plus invité à afficher une boîte de dialogue de style OS X, au lieu d'une ligne de texte d'entrée dans votre terminal. Pas de biggie. Mais si vous faites cela, ssh-agent ne mettra pas en cache vos informations d'identification. C'est clairement cassé et frustrant car je pourrais facilement vivre avec l'invite de texte si les informations d'identification étaient mises en cache.

En définissant KeychainIntegration sur no, ssh génère une erreur matérielle, comme suit:

~/.ssh/config: line 11: Bad configuration option: KeychainIntegration
~/.ssh/config: terminating, 1 bad configuration options

Ma question est simplement la suivante: existe-t-il un moyen de désactiver réellement l'intégration du trousseau OS X pour SSH?


Belle question, je n'ai pas de réponse immédiate, mais espérons qu'avec les votes qu'il a, il apparaîtra sur le radar de quelqu'un. Je peux confirmer le bogue sur ma version d'OS X avec juste un fichier de configuration d'une ligne - définir la valeur sur oui ou non échoue comme décrit.
bmike

Un point de clarification: je ne reçois le message "L'enregistrement du mot de passe dans le trousseau a échoué" que lorsque ssh-add met correctement en cache les informations d'identification. Je ne le vois pas à chaque tentative de connexion, c'est ainsi qu'il se lit, lorsque je le relis. Avec les informations d'identification mises en cache, il se connecte simplement silencieusement, comme vous vous en doutez.
Jim

Réponses:


7

Sur la base du code source de la version actuelle de SSH livrée avec Mavericks (située ici ), il semble que la fonctionnalité de l'option de configuration KeychainIntegrationn'a pas encore été implémentée. Je fais cette hypothèse sur la base du contenu de openssh / readconf.h , qui ne fait pas référence à l' KeychainIntegrationoption. Il fait cependant référence à l' askpassguioption. La vérification de la structure "mots-clés" dans ce fichier montre en effet que l' keychainintegrationoption n'est pas présente (ce qui implique à son tour que le oBadOptioncode op (NULL) serait retourné).

Un autre indice impliquant que la fonctionnalité que vous désirez n'est pas implémentée de la manière spécifiée par la page de manuel est le fichier: openssh / keychain.c . Le code source montre en fait que le defaultssystème (c'est-à-dire les fichiers de liste de propriétés) est utilisé pour stocker les paramètres liés à KeychainIntegration. Plus précisément, les lignes de la store_in_keychainréférence de fonction 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;
}

Voici la get_boolean_preferencefonction correspondante . Notez qu'il utilise CFPreferencesCopyAppValuepour obtenir un booléen à partir de l'identifiant d'application "org.openbsd.openssh":

#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

Cela peut impliquer que vous pouvez désactiver la KeychainIntegrationfonctionnalité pour vous-même en exécutant cette commande par défaut:

defaults write org.openbsd.openssh KeychainIntegration -bool NO

ou pour le définir pour tous les utilisateurs:

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


2
Vous avez creusé profondément et je l'apprécie. J'ai essayé de régler KeychainIntegrationsur NOvia defaultscomme vous l'avez suggéré. sshpuis se comporte comme si je l' avais mis AskPassGUIen ~/.ssh/config- aucune information d' identification sont mises en cache, et je suis invité à entrer le mot de passe tout le temps. Moins qu'utile. Pourtant, je pense que vous avez répondu à la question, et la réponse est, simplement: "Il peut être désactivé, mais il n'est pas entièrement mis en œuvre, et vous n'aimerez probablement pas les résultats."
Jim

Merci beaucoup, je cherchais partout pour trouver une réponse à cela. Puisque j'ai un fichier .zshrc personnalisé que je porte entre mac et linux, cela me rendait fou que le trousseau prenne le contrôle de la gestion de ssh-agent et des clés ajoutées.
LF4
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.