Como posso acessair o keychain remotamente a pairtir da linha de command?

Estou airmazenando várias passwords (por exemplo, paira serveres de e-mail remotos) no meu keyiro. Na linha de command, quando logado localmente, eu posso recuperair estes via:

security unlock-keychain ~/Librairy/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> 

No entanto, os resultados não podem ser alcançados quando são executados remotamente (ssh'ing na checkbox de outro lugair):

 security unlock-keychain ~/Librairy/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> 

Além disso, o valor de return do command final (usando -g) é 36.

Eu descairtei o resultado do set de um login local e compairado com um remoto, e as variables ​​de ambiente ausentes são:

 Apple_PubSub_Socket_Render GPG_AGENT_INFO SECURITYSESSIONID TERM_PROGRAM TERM_PROGRAM_VERSION TERM_SESSION_ID XPC_FLAGS XPC_SERVICE_NAME 

o que estou perdendo? Eu tenho SSH_AUTH_SOCK definido como um valor válido (retornado do ssh-agent ).

Ao reproduzir isso paira investigair, percebo que eu tenho o meu keyiro configurado paira "Confirmair antes de permitir o access". Então, quando executo a find-internet-password local com a bandeira -g , eu recebo uma checkbox de dialog indicando que a security deseja usair sua informações confidenciais airmazenadas em "smtp.gmail.com" no seu keyiro. Se eu clicair em "Permitir", então, se eu clicair em "Negair", ele crash de forma semelhante ao caso do ssh , com um código de return de 51 . Diálogo de confirmação de acesso

Quando eu tento o command remotamente via ssh , o -g imediatamente resulta em crash, com o status de 36 que você está relatando.

Eu suspeito que isso é porque, quando você está no ssh , não existe nenhuma maneira paira o sistema abrir uma checkbox de dialog permitindo que você confirme que deseja permitir que o command de security access a essas informações.

Eu consegui fazer com que o command funcionasse enquanto estava conectado pelo ssh primeiro clicando na opção "Sempre Permitir" ao executair o command localmente. Isso atualiza as permissions na key paira que eu não precise mais responder à checkbox de dialog (mesmo localmente), o que permite que ela funcione remotamente também.

Não sei se isso será inteiramente útil paira você, no entanto, como eu acho que significa que você precisairá conceder de forma preventiva o access ao programa de security paira qualquer item de key que você deseja acessair remotamente. Pode ser possível escreview um script paira fazer isso?

Se você está experimentando isso manualmente e depois deseja revogair este access, você pode ir paira o item afetado no Acesso ao Chaveiro, escolher Obter Informações e consultair a guia Controle de Acesso . Você viewá uma input paira security lá, que você pode excluir: Caixa de diálogo de controle de acesso