유닉스 패스 - PASSWORD_STORE_GPG_OPTS를 사용하여 비밀번호를 전달합니다.

유닉스 패스 - PASSWORD_STORE_GPG_OPTS를 사용하여 비밀번호를 전달합니다.

패스 정보는 다음과 같습니다.https://www.passwordstore.org

내 요점은 명령줄에서 암호 키를 전달하고 싶다는 것입니다. 그러나 이 문제와 관련하여 내가 찾을 수 있는 주제와 해결 방법은 내 상황에 적용되지 않았습니다.

Pass의 코드를 확인해 보니 PASSWORD_STORE_GPG_OPTS라는 매개변수를 발견했습니다. 내가 아는 한, 이것을 사용하여 통과하는 것이 가능해야 합니다.--pinentry-mode=loopback --passphrase "<여기에 비밀번호>"Pass로 실행되는 gpg로. 이를 수행하는 코드 조각은 다음과 같습니다.

#Line 9
GPG_OPTS=( $PASSWORD_STORE_GPG_OPTS "--quiet" "--yes" "--compress-algo=none" "--no-encrypt-to" )

#(...)

#Line 387

pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | $BASE64)" || exit $?

그러나 어떤 이유로 이것은 작동하지 않습니다.

따라서 문제는 이 매개변수를 사용하여 gpg에 암호를 전달하고 프롬프트 없이 전달을 사용할 수 있느냐는 것입니다. 그렇지 않다면 다른 방법이 있나요?

편집: @them이 제안한 대로, 내가 하고 있는 일에 대한 정보는 다음과 같습니다.

변수 설정:

 export PASSWORD_STORE_GPG_OPTS="--pinentry-mode=loopback --passphrase '<password_goes_here>'"

참고: 비밀번호에는 대문자, 소문자, 숫자만 포함되며 공백이나 기타 문자는 포함되지 않습니다.

그런 다음 다음 명령을 실행합니다.

pass address/to/some/password

결과 :

gpg: decryption failed: No secret key

답변1

제 경우에는 @they가 제안한 것처럼 (알 수 없는 이유로...) 따옴표를 사용하는 것이 문제였습니다. 그들 없이는 모든 것이 매력처럼 작동합니다.

답변2

위에서 언급한 것처럼 문자열에서 비밀번호를 읽는 대신 일부 파일을 통해 비밀번호를 처리하는 것도 가능합니다.

export PASSWORD_STORE_GPG_OPTS="--pinentry=loopback --passphrase-file /path/to/.passphrase"

비밀번호를 해시하는 것은 불가능해 보이므로(예: 를 사용하여 mkpasswd -m sha-512 passphrase > /path/to/.passphrase-hashed) 일반 텍스트로 제공해야 합니다.

관련 정보