Comment puis-je accéder au trousseau à distance à partir de la ligne de commande?


23

Je stocke divers mots de passe (par exemple, pour les serveurs de messagerie distants) dans mon trousseau. À partir de la ligne de commande, une fois connecté localement, je peux récupérer ces informations via:

security unlock-keychain ~/Library/Keychains/login.keychain
<enter password>
security find-internet-password -s smtp.gmail.com -a foo@gmail.com
<dumps keychain attributes, not including password>
security find-internet-password -s smtp.gmail.com -a foo@gmail.com -g
<dumps keychain attributes, including password>

Cependant, les résultats ne peuvent pas être obtenus lorsqu'ils sont exécutés à distance (en ssh 'dans la boîte depuis un autre endroit):

security unlock-keychain ~/Library/Keychains/login.keychain
<enter password>
security find-internet-password -s smtp.gmail.com -a foo@gmail.com
<dumps keychain attributes, not including password>
security find-internet-password -s smtp.gmail.com -a foo@gmail.com -g
<nothing printed, to stdout or stderr>

De plus, la valeur de retour de la commande finale (avec -g) est 36.

J'ai vidé la sortie d' setun login local et l' ai comparée à une connexion distante. Les variables d'environnement manquantes sont:

Apple_PubSub_Socket_Render
GPG_AGENT_INFO
SECURITYSESSIONID
TERM_PROGRAM
TERM_PROGRAM_VERSION
TERM_SESSION_ID
XPC_FLAGS
XPC_SERVICE_NAME

Qu'est-ce que je rate? J'ai SSH_AUTH_SOCKmis à une valeur valide (retournée de ssh-agent).


Connexes: Porte
Kenorb

Réponses:


10

En reproduisant ceci pour enquêter, je remarque que mon trousseau est configuré pour «Confirmer avant d'autoriser l'accès». Ainsi, lorsque j'exécute find-internet-passwordlocalement avec l' -gindicateur, une boîte de dialogue indiquant que la sécurité souhaite utiliser vos informations confidentielles stockées dans «smtp. gmail.com "dans votre trousseau. Si je clique sur «Autoriser», alors cela fonctionne. Si je clique sur «Refuser», la sshprocédure échoue de la même manière , avec un code de retour de 51. Dialogue de confirmation d'accès

Lorsque j'essaie la commande à distance via ssh, le -grésultat immédiat est un échec, avec le statut de 36celui que vous signalez.

Je suppose que cela est dû au fait que, lorsque vous entrez ssh, le système n'a aucun moyen de faire apparaître une boîte de dialogue vous permettant de confirmer que vous souhaitez autoriser la securitycommande à accéder à ces informations.

J'ai été en mesure de faire en sorte que la commande fonctionne en étant connecté en sshcliquant d'abord sur l'option «Toujours autoriser» lors de l'exécution de la commande localement. Ceci met à jour les autorisations dans le trousseau afin que je n’aie plus besoin de répondre à la boîte de dialogue (même localement), ce qui lui permet également de fonctionner à distance.

Cependant, je ne sais pas si cela vous sera entièrement utile, car cela signifie que vous devrez accorder au securityprogramme un accès préventif à tout élément de trousseau auquel vous voudrez peut-être accéder à distance. Il peut être possible d'écrire un script pour faire cela?

Si vous expérimentez manuellement cette opération et souhaitez ultérieurement révoquer cet accès, vous pouvez accéder à l'élément concerné dans Accès au trousseau, choisir Obtenir des informations et consulter l' onglet Contrôle d'accès . Vous verrez une entrée pour securitycela, que vous pouvez supprimer:Boîte de dialogue de contrôle d'accès


J'ai fait la même chose - j'ai ajouté la commande "sécurité" à la liste "Toujours autoriser l'accès" (ce qui se fait également en cliquant sur "Toujours autoriser" dans le menu contextuel qui apparaît lors de l'exécution de la commande localement), mais je ne peux toujours pas. accéder à l'élément de trousseau à distance par la suite. Il doit y avoir un autre paramètre quelque part qui doit être modifié, mais je ne le trouve pas.
Ether

1
ahahaha - cela fonctionne réellement, mais vous devez vous connecter avec une nouvelle session après avoir modifié les paramètres du trousseau pour qu'ils prennent effet. Hourra! (J'ajouterai une réponse à cette question si je découvre un jour comment modifier à distance les privilèges d'accès, mais il est acceptable de configurer localement à l'avance pour une utilisation ultérieure à distance.)
Ether

2
Notez également qu'il est essentiel d'exécuter également security unlock-keychain ~/Library/Keychains/login.keychaindans la session à distance où vous essayez d'utiliser le trousseau. Cela vous demandera votre mot de passe, vous ne pourrez donc pas le faire dans un script. Il y a peut-être moyen d'y parvenir sans mot de passe, mais c'est hors du champ de cette question :)
Ether

est-ce que quelqu'un sait si je peux entrer le mot de passe dans la ligne de commande pour la sécurité de déverrouiller le trousseau?
tofutim

1
@Ether Si le trousseau est dans le /Users/[user]/Library/Keychains/chemin par défaut , vous pouvez omettre le chemin complet et utiliser simplement login.keychain.
Solgar

4

security -i unlock-keychain

fonctionne pour moi dans MacOS 10.13.4 High Sierra.

Après avoir étudié la solution de Karthick, j'ai trouvé ceci. Le -i rend la commande interactive et vous invite à entrer votre mot de passe dans le terminal.


2

Tant que le trousseau de sécurité est à l'emplacement par défaut, vous pouvez exécuter la commande ci-dessous pour le déverrouiller. Il ne demande pas un mot de passe. Cela a fonctionné à distance.

security unlock-keychain -p "enter password"


Bienvenue à Ask Different! Nous essayons de trouver les meilleures réponses et ces réponses fourniront des informations complémentaires sur la raison pour laquelle elles sont les meilleures. Les réponses doivent être autonomes, alors expliquez pourquoi vous pensez que la réponse fournie résoudra le problème ou sera meilleure que les autres. Fournir des liens en tant qu'informations complémentaires peut également aider le PO, et d'autres encore, à trouver des informations supplémentaires pour eux-mêmes. Voir Comment répondre pour savoir comment fournir une réponse de qualité. - De l'avis
fsb
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.