Я храню различные пароли (например, для удаленных почтовых серверов) в моей цепочке для ключей. Из командной строки при локальном входе я могу получить их через:
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>
Тем не менее, результаты не могут быть достигнуты при удаленном запуске (ssh'ing в коробка откуда-то еще)
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>
Более того, возвращаемое значение последней команды (с использованием -g) равно 36.
Я сбросил вывод set
из локального логина и сравнил его с удаленным
один, а отсутствующие переменные среды:
Apple_PubSub_Socket_Render
GPG_AGENT_INFO
SECURITYSESSIONID
TERM_PROGRAM
TERM_PROGRAM_VERSION
TERM_SESSION_ID
XPC_FLAGS
XPC_SERVICE_NAME
Что мне не хватает? я должен SSH_AUTH_SOCK
установить правильное значение (возвращается
от ssh-agent
).