Come posso accedere al portachiavi in remoto dalla riga di comando?

21

Sto memorizzando varie password (ad esempio per i server di posta elettronica remoti) nel mio portachiavi. Dalla riga di comando, dopo aver effettuato l'accesso localmente, posso recuperarli tramite:

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

Tuttavia, i risultati non possono essere raggiunti quando vengono eseguiti in remoto (ssh'ing in box da qualche altra parte):

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

Inoltre, il valore di ritorno del comando finale (usando -g) è 36.

Ho scaricato l'output di set da un accesso locale e l'ho confrontato con un remoto uno e le variabili di ambiente mancanti sono:

Apple_PubSub_Socket_Render
GPG_AGENT_INFO
SECURITYSESSIONID
TERM_PROGRAM
TERM_PROGRAM_VERSION
TERM_SESSION_ID
XPC_FLAGS
XPC_SERVICE_NAME

Cosa mi manca? Ho SSH_AUTH_SOCK impostato su un valore valido (restituito da ssh-agent ).

    
posta Ether 24.03.2015 - 22:15
fonte

3 risposte

10

Nel riprodurre questo per investigare, noto che ho il mio portachiavi configurato per "Conferma prima di consentire l'accesso." Quindi quando eseguo il find-internet-password localmente con il -g , ricevo una finestra di dialogo che dice la sicurezza vuole utilizzare le informazioni riservate memorizzate in "smtp.gmail.com" nel portachiavi. Se faccio clic su "Consenti", allora funziona, se faccio clic su "Nega" fallisce in modo simile al caso ssh , con un codice di ritorno di 51 .

Quandoprovoilcomandodaremototramitessh,il-ggeneraimmediatamenteunerrore,conlostatodi36chestaisegnalando.

Hoilsospettochequestosiadovutoalfattochequandosshin,nonc'èmodoperilsistemadifarapparireunafinestradidialogochetipermettediconfermarechevuoiconsentirealcomandosecuritydiaccedereaquesteinformazioni.

Sonoriuscitoafarfunzionareilcomandomentreeroconnessodasshfacendoprimaclicsull'opzione"Consenti sempre" quando esegui il comando localmente. Questo aggiorna le autorizzazioni in Keychain in modo che non sia più necessario rispondere alla finestra di dialogo (anche localmente), il che consente di lavorare in remoto.

Non so se questo ti sarà di grande aiuto, tuttavia, poiché penso che significhi che dovrai concedere preventivamente l'accesso al programma security a tutti gli oggetti portachiavi a cui potresti voler accedere in remoto. Potrebbe essere possibile scrivere uno script per farlo?

Se stai sperimentando manualmente questo e successivamente vuoi revocare questo accesso, puoi accedere alla voce interessata in Accesso Portachiavi, scegliere Ottieni informazioni e controllare Controllo di accesso scheda. Verrà visualizzata una voce per security , che puoi eliminare:

    
risposta data 24.03.2015 - 23:07
fonte
3

security -i unlock-keychain

funziona per me in MacOS 10.13.4 High Sierra.

Dopo aver esaminato la soluzione di Karthick, ho trovato questo. -I rende il comando interattivo e ti richiede nel terminale la password.

    
risposta data 23.05.2018 - 21:39
fonte
1

Finché il portachiavi di sicurezza si trova nella posizione predefinita, è possibile eseguire il comando seguente per sbloccarlo. Non richiede una password. Ha funzionato in remoto.

security unlock-keychain -p "enter password"

    
risposta data 22.02.2018 - 16:43
fonte

Leggi altre domande sui tag