명령 행에서 원격으로 키 체인에 액세스하려면 어떻게해야합니까?


23

키 체인에 다양한 비밀번호 (예 : 원격 이메일 서버)를 저장하고 있습니다. 명령 행에서 로컬로 로그인하면 다음을 통해 검색 할 수 있습니다.

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>

그러나 원격으로 실행할 경우 결과를 얻을 수 없습니다 (다른 곳에서 상자로 sh).

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).


답변:


11

이것을 조사하기 위해 이것을 재현 할 때, 나는 "액세스를 허용하기 전에 확인"으로 키 체인이 구성되어 있음을 알았습니다. 따라서 플래그 find-internet-password로 로컬에서 수행 할 때 보안에 "smtp. gmail.com”을 키 체인에 추가하십시오. "허용"을 클릭하면 작동합니다. "거부"를 클릭하면 사례 와 유사하게 리턴 코드 가로 실패합니다 . -gssh51액세스 확인 대화 상자

나는 원격을 통해 명령을 할 때 ssh의는 -g즉시의 상태, 고장 발생 36이보고됩니다.

나는 이것이 당신 ssh이 들어 왔을 때 시스템이 대화 상자를 띄워서 security명령 이이 정보에 액세스 할 수 있도록 허용 할 수있는 방법 이 없기 때문이라고 생각합니다 .

ssh명령을 로컬로 실행할 때 먼저 "허용"옵션을 클릭하여 연결되어있는 동안 명령이 작동하도록 할 수있었습니다 . 이것은 Keychain의 권한을 업데이트하여 더 이상 대화 상자 (로컬에서도)에 응답 할 필요가 없으므로 원격으로도 작동합니다.

그러나 이것이 security원격으로 액세스 할 수있는 키 체인 항목에 대해 프로그램 액세스 권한을 사전에 부여해야한다는 것을 의미하기 때문에 이것이 당신에게 완전히 도움이 될지 모르겠습니다 . 이를 위해 스크립트를 작성하는 것이 가능할 수 있습니까?

이것을 수동으로 실험하고 나중에이 액세스를 취소하려면 키 체인 액세스의 영향을받는 항목으로 이동하여 정보 입수를 선택 하고 액세스 제어 탭을 살펴보십시오 . security거기에 대한 항목 이 표시되며이를 삭제할 수 있습니다.액세스 제어 대화 상자


나는 똑같은 일을했다- '항상 액세스 허용'목록에 'security'명령을 추가했다. 그 후 원격으로 키 체인 항목에 액세스하십시오. 어딘가에 변경해야 할 다른 설정이 있어야하지만 찾을 수 없습니다.
Ether

1
ahahaha -이 수행 그 내용을 적용하려면 키 체인의 설정을 변경 한 후 새로운 세션으로 로그인 실제로 작동하지만 일이 필요합니다. 만세! (액세스 권한을 원격으로 변경하는 방법을 찾은 경우이 질문에 대한 답변을 추가하겠습니다. 그러나 이후 원격 사용을 위해 미리 로컬로 설정하는 것이 허용됩니다.)
Ether

2
또한 security unlock-keychain ~/Library/Keychains/login.keychain키 체인을 사용하려는 원격 세션 에서도 실행 해야합니다. 비밀번호를 묻는 메시지가 표시되므로 스크립트에서 비밀번호를 입력 할 수 없습니다. 암호없이 이것을 달성하는 방법이있을 수 있지만,이 질문의 범위를 벗어납니다 :)
Ether

보안 잠금 해제 키 체인의 명령 행에 비밀번호를 입력 할 수 있는지 아는 사람이 있습니까?
tofutim

1
@Ether 키 체인이 기본 /Users/[user]/Library/Keychains/경로에 있으면 전체 경로를 생략하고 그냥 사용할 수 login.keychain있습니다.
solgar

5

security -i unlock-keychain

MacOS 10.13.4 High Sierra에서 나를 위해 일합니다.

karthick의 솔루션을 조사한 결과, 나는 이것을 발견했다. -i는 명령을 대화식으로 만들고 터미널에서 암호를 묻습니다.


3

보안 키 체인이 기본 위치에 있으면 아래 명령을 실행하여 잠금을 해제 할 수 있습니다. 암호를 묻지 않습니다. 원격으로 작동했습니다.

security unlock-keychain -p "enter password"


다른 질문에 오신 것을 환영합니다! 우리는 최선의 답변을 찾으려고 노력하고 있으며 그 답변은 그들이 왜 최고인지에 대한 정보 를 제공 할 것 입니다. 답변은 독립적이어야하므로 제공 한 답변이 문제를 해결하거나 다른 사람보다 낫다고 생각하는 이유를 설명하십시오. 지원 정보로 링크를 제공하면 OP 및 기타 사용자가 추가 정보를 찾을 수 있습니다. 양질의 답변을 제공하는 방법에 대한 답변 방법을 참조하십시오 . -리뷰에서
fsb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.