35 votos

¿Cómo puedo acceder al llavero en forma remota desde la línea de comandos?

Yo soy el almacenamiento de contraseñas (por ejemplo, para los servidores de correo remotos) en mi llavero. Desde la línea de comandos, cuando inicie sesión localmente, puedo recuperar a estos a través de:

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>

Sin embargo, los resultados no pueden ser alcanzados cuando se ejecuta de forma remota (ssh ing en el cuadro de algún otro lugar):

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>

Por otra parte, el valor de retorno del último comando (con-g) es de 36.

He vertido la salida de set a partir de un inicio de sesión local y lo comparó con un control remoto uno, y la falta de variables de entorno son:

Apple_PubSub_Socket_Render
GPG_AGENT_INFO
SECURITYSESSIONID
TERM_PROGRAM
TERM_PROGRAM_VERSION
TERM_SESSION_ID
XPC_FLAGS
XPC_SERVICE_NAME

Lo que me estoy perdiendo? Tengo SSH_AUTH_SOCK ajustado a un valor válido (devuelto de ssh-agent).

13voto

James Elliott Puntos 86

En la reproducción de este a investigar, me doy cuenta de que tengo mi llavero configurado para "Confirmar antes de permitir el acceso." Así que cuando realizo find-internet-password a nivel local con la -g bandera, me sale un cuadro de diálogo que indica la seguridad quiere usar su información confidencial almacenada en "smtp.gmail.com" en su llavero. Si hago clic en "Permitir" y luego funciona, si hago clic en "Denegar" falla de manera similar a la ssh de casos, con un código de retorno de 51. Access confirmation dialog

Cuando me pruebe el comando de forma remota a través de ssh, -g inmediatamente de resultados en el fracaso, con la condición de 36 que está informando.

Sospecho que esto se debe a que, al ssh , no hay manera de que el sistema abrirá un cuadro de diálogo que permite confirmar que desea permitir el security comando para acceder a esta información.

Yo era capaz de conseguir que funcione el comando mientras está conectado por ssh por primera clic en "Permitir Siempre" opción cuando se ejecuta el comando localmente. Esto actualiza los permisos en el Llavero para que yo ya no deben responder a la necesidad de diálogo (incluso a nivel local), lo que permite trabajar de forma remota.

No sé si esto será completamente útil para usted, sin embargo, como creo que significa que usted tendrá que preventivamente se conceda a la security programa de acceso a cualquier llavero artículos que desea acceder de forma remota. Es posible escribir un script para hacer esto?

Si usted está experimentando con esto de forma manual y posteriormente desea revocar este acceso, usted puede ir para el elemento afectado en Acceso a Llaveros, elija Obtener Información y buscar en el Control de Acceso a la ficha. Usted verá una entrada para security , que puede eliminar: Access Control Dialog

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X