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 :
~/Library/LaunchAgents/
/Library/LaunchAgents/
-
/Network/Library/LaunchAgents/
(absente de la plupart des systèmes)
/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.