8 votes

Comment empêcher ssh d'ajouter ma clé à ssh-agent sur Snow Leopard ?

J'ai récemment commencé à utiliser Snow Leopard (après avoir utilisé Leopard pendant quelques années), et j'ai remarqué que lorsque j'utilise ssh en utilisant une clé privée protégée par une phrase de passe, ssh ajoute automatiquement la clé à ssh-agent. Question 1 : Comment puis-je empêcher ssh de se comporter de la sorte (en effectuant l'ajout automatique) ?

Je suis no qui cherche à désactiver le lancement automatique de ssh-agent. Je l'utilise en fait, mais je veux que les clés soient ajoutées manuellement (via ssh-add), et non automatiquement.

Ma solution actuelle : J'ai édité /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist pour l'exécuter avec l'argument "-t 1" et cela fonctionne bien. Mais je crains qu'une mise à jour du logiciel ne l'annule. Question 2 : Si je place la plist modifiée dans ~/Bibliothèque/LaunchAgents/, celle qui se trouve dans /System sera-t-elle ignorée pour mon utilisateur ? Il s'agirait d'une solution de contournement stable.

5voto

Nip Points 362

Clés ajoutées automatiquement

Les clés SSH peuvent être ajoutées de trois manières différentes ssh-agent dans la neige Leopard.

  • manuellement, avec ssh-add ,
  • automatiquement, par ssh lorsque vous fournissez la phrase de passe d'une clé par l'intermédiaire de l'invite de l'interface graphique, et
  • automatiquement, par ssh-agent lorsqu'il démarre pour la première fois.

Les deux dernières méthodes sont des extensions Apple : il n'y a pas d'additifs "automatiques". automatiques avec OpenSSH. Toutes les références à ssh , ssh-agent , et ssh-add ci-dessous concernent les versions Snow Leopard d'Apple, à moins que je fais précéder le nom du programme de l'adjectif "stock".

Vous pouvez désactiver toutes les modifications SSH orientées vers le trousseau d'Apple à l'aide d'un paramètre de préférence (non documenté ?):

defaults write org.openbsd.openssh KeychainIntegration -bool false

Clés ajoutées automatiquement par ssh

(C'est la partie que j'ai oubliée dans la version précédente de mon texte original. car j'utilise généralement un "stock" ssh .)

Chaque fois que ssh tente d'utiliser une clé SSH protégée par une phrase de passe pour pour s'authentifier auprès d'un hôte distant, l'interface graphique demande le mot de passe de la clé SSH. le mot de passe de la clé SSH. La clé est également chargée dans l'agent (si l'option si la phrase de passe est correcte), que vous ayez ou non coché la case "Mémoriser le mot de passe dans mon trousseau". mot de passe dans mon trousseau".

Il existe deux moyens (non documentés ?) d'empêcher ssh d'émettre (et donc d'ajouter la clé SSH à l'interface utilisateur). ssh-agent ) :

  • Un paramètre de préférence :

      defaults write org.openbsd.openssh AskPassGUI -bool false
  • Un ssh_config (ou -o à l'option ssh ) qui spécifie AskPassGUI no .

    (voir keychain_read_passphrase en keychain.c ; les oAskPassGUI provient du paramètre AskPassGUI paramètres de configuration)

Quand AskPassGUI est désactivé, ssh vous demandera de suivre la procédure normale le mot de passe de la clé (c'est-à-dire par l'intermédiaire du tty).

Vous pouvez également éviter les ajouts automatiques de ssh en utilisant un "stock" ssh (par exemple, OpenSSH compilé par MacPorts , Homebrew "doublons" de homebrew-alt ou Fink ).

Clés ajoutées automatiquement par ssh-agent

Les clés qui ssh-agent Les ajouts automatiques sont ceux qui ont leur phrase de passe est stockée dans un trousseau de clés. Ces derniers "clés mémorisées" sont automatiquement ajoutés lorsqu'un nouveau ssh-agent commence. Il n'y a pas de ligne de commande ou d'option de configuration (autre que KeychainIntegration décrit ci-dessus) afin d'éviter que les ssh-agent de le chargement automatique des "clés mémorisées" (voir l'appel à process_add_from_keychain (défini dans keychain.c ) de main en ssh-agent.c ). Toutefois, si vous pouvez verrouiller les trousseaux de clés qui stockent les phrases de passe de vos clés SSH, vous pouvez les verrouiller. clés SSH, vous pouvez cliquer sur Annuler lorsque l'option ssh-agent demande à de déverrouiller le(s) trousseau(s) de clés et d'obtenir effectivement ssh-agent pour sauter l'ajout de ces "clés mémorisées" lors de la première mise en service.

S'il n'y a pas de ssh-agent en cours d'exécution, votre première utilisation de ssh volonté déclenchera probablement lancementd pour démarrer une ssh-agent qui chargera tous les les "clés mémorisées". Cela donne l'impression que ssh est en train de charger le clés dans l'agent, mais c'est en réalité l'agent lui-même qui charger les clés. Il ne le fait automatiquement que lorsqu'il démarrage.

En -k option de ssh-add fournit un moyen manuel d'ajouter l'élément "clés mémorisées" (voir add_from_keychain en ssh-add.c qui aboutit à un message à l'agent qui appelle process_add_from_keychain de process_message en ssh-agent.c ).

lancementd Configuration

Vous avez raison de dire qu'une mise à jour du système pourrait écraser la modification que vous avez apportée au fichier dans le fichier /System/Library/LaunchAgents/ . Il faut toujours éviter de modifier les choses sous /System/ ; la plupart des choses peuvent être (re)configurées sans faire de changements à cet endroit. Dans ce cas, il semble que vous devriez être en mesure de remplacer la valeur par défaut du système lancementd sur la base d'un fichier situé dans le dossier de l'utilisateur. ~/Library/LaunchAgents/ .

D'après ce que j'ai pu constater 1 Les entrées sont chargées dans l'ordre suivant 2 :

  1. ~/Library/LaunchAgents/
  2. /Library/LaunchAgents/
  3. /Network/Library/LaunchAgents/ (absente de la plupart des systèmes)
  4. /System/Library/LaunchAgents/

Elle ne semble pas être documentée, mais seulement la première configuration de travail pour chaque étiquette (par ex. org.openbsd.ssh-agent ) seront conservés. Toute configuration provenant d'un répertoire ultérieur et portant le même label qu'une configuration provenant d'un répertoire antérieur est effectivement ignorée.


1 Voir NSStartSearchPathEnumeration utilisé dans launchctl.c et défini dans NSSystemDirectories.h / NSSystemDirectories.c .

2 lancementd regarde également dans le LaunchDaemons/ à côté des différents répertoires LaunchAgents/ pour d'autres types d'emplois.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X