--passphrase가 지정된 경우에도 GPG2에서 비밀번호를 묻습니다.

--passphrase가 지정된 경우에도 GPG2에서 비밀번호를 묻습니다.

GPG 암호 해독 스크립트를 작성하려고 하는데 명령줄에 비밀번호를 제공해야 합니다. 매뉴얼 페이지에 따르면 이를 수행하는 세 가지 방법이 있습니다. 를 사용하여 파일에서 읽기 --passphrase-file, 를 사용하여 stdin(또는 다른 파일 설명자)에서 읽기 --passphrase-fd 0, just 를 사용하여 명령줄에 포함하는 것입니다 --passphrase. 위의 모든 사항도 --batch설정해야 하는데 저는 그렇게 했습니다.

가장 최근의 명령줄 시도는 다음과 같습니다.

echo "<password>" | gpg2 --no-tty --batch --passphrase-fd 0 -d -o /<path_to_destination>/$FILE_NAME $FILE

여전히 비밀번호를 묻는 대화 상자가 나타납니다. 내가 여기서 무엇을 놓치고 있는 걸까요? 참고로 차이가 나면 내 비밀번호에는 와 같은 특수 문자가 포함되어 있지만 &이에 대해 불평하지 않는 것 같습니다. 또한 gpg 버전은 2.1.9입니다.

# gpg2 --version
gpg (GnuPG) 2.1.9
libgcrypt 1.7.1
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

편집 : 달리GPG가 콘솔 모드 핀트리를 사용하여 비밀번호를 묻는 메시지를 표시하도록 하는 방법은 무엇입니까?, 이는 단순히 SSH 세션에서 사용할 텍스트 기반 비밀번호 항목을 얻으려는 것인데, 저는 스크립팅에 사용하기 위해 GPG를 사용하는 완전히 비대화형 방법을 얻으려고 합니다.

답변1

여기서 해결책을 찾았습니다.https://wiki.archlinux.org/index.php/GnuPG#Unattended_passphrase

간단히 말해서, 먼저 파일에 다음 줄을 추가하여 gpg-agent에서 pinentry "루프백" 모드를 활성화해야 했습니다 ~/.gnupg/gpg-agent.conf.

allow-loopback-pinentry

그런 다음 --pinentry-mode loopbackgpg2호출 에 인수를 추가합니다.

관련 정보