--passphrase와 함께 GnuPG를 사용하는 방법은 무엇입니까?


11

gpg암호 "test"를 사용하여 "file"이라는 파일 을 실행하는 스크립트를 작성하려고합니다 .

일반적으로을 사용할 때 일반적으로 gpg실행 gpg -c file되고 암호 문구를 묻습니다. 그러나이 스크립트가 모든 것을 스스로 수행하기를 원하므로 명령의 일부로 암호를 제공하고 싶습니다.

이제 :을 사용하려고하면 다음 gpg -c file --passphrase test과 같이 출력됩니다.

사용법 : gpg [options] --symmetric [filename]

어떤 솔기가 내가 사용하기를 원합니다 gpg --passphrase test --symmetric file. 그러나 그렇게하면 암호 구를 묻는 대화 상자가 나타납니다. 내가 원하는 것이 아닙니다.

인수를 올바르게 설정하려면 어떻게합니까?

답변:


7

GnuPG에서 옵션은 명령 --passphrase앞에 있어야 하므로 옵션이 앞에 와야합니다 --symmetric.

핀 입력 창에 관해서는 어쨌든 팝업되지만 (사용하더라도 --passphrase) 이미 GnuPG 2를 사용하고있을 것 --batch입니다 --passphrase. 매뉴얼 페이지에서 :

--passphrase string
    Use string as the passphrase. This can only be used if only one
    passphrase is supplied. Obviously, this is of very questionable
    security on a multi-user system. Don't  use this option if you
    can avoid it.  Note that this passphrase is only used if the
    option --batch has also been given.  This is different from
    GnuPG version 1.x.

다중 사용자 시스템에서는 다른 모든 사용자가 명령 줄을 읽을 수 있으며 GnuPG가 실행되는 동안 암호도 읽을 수 있습니다. --passphrase-*파일이나 파이프에서 읽는 대신 다른 옵션 중 하나를 사용하는 것이 좋습니다.


당신이 말하는 것은 --passphraseand 및 --symmetric인수의 순서 가 실제로 정확했지만 인수가 누락 된 것 --batch입니까? 그것이 저에게 효과가 없었기 때문입니다. 만약을 --batch대비하여 전후 에 모두 추가하려고했습니다 . 또한, 내가 사용하는 것이 GPG 2인지 확인하는 방법은 없지만 붙여 넣은 부분이 Note that this passphrase is only used if the option --batch has also been given.내 man페이지에 존재하지 않습니다 .

어떤 운영 체제 / 배포판을 사용하고 있습니까? gpg --version사용중인 GnuPG 버전에 대한 정보를 제공해야합니다. 당신은 가지고 있습니까 gpg2바이너리를?
— Jens Erat

Xubuntu 14.04.를 사용하고 있으며 버전 gpg은 1.4.16입니다. 귀하의 의견에 의해 영감을, 나는 그것을 설치하고 그것을 밖으로 시도 그래서 gpg2는 별도로 개발되고 있지만, 그 불평 발견no valid OpenPGP data found. processing message failed: Unknown system error

Jens는 매우 훌륭하고 많은 답변에 대한 많은 질문에 대답하지만 한 가지 점에서 잘못되었습니다. "옵션은 명령보다 우선해야하므로 --passphrase 옵션은 --symmetric 앞에 와야합니다." 전혀 사실이 아닙니다.
— rsaw

@ rsaw : 당신은 부분적으로 옳습니다. --symmetric그리고 --passphrase주문은 관련이없는 것 같지만 나중에 --export정의하고 정의 하려고합니다 --armor. 일반적으로, 옵션은 명령보다 우선해야하며 이는 매뉴얼 페이지에 정의 된 순서입니다.
— Jens Erat

2

gpg --versionv2를보고하는 경우 --batch옵션 을 추가해야합니다 .

구문 출력에 따라 아마도 v1을 사용하고 있습니다.

gpg --passphrase PASS -c --no-use-agent FILE

옵션의 순서는 중요하지 않습니다. 그러나 모든 파일이 마지막 인수 여야합니다.


1

사용 --pinentry-mode loopback하여 --passphrase& 와 함께 사용하면 --passphrase-[file/fd]파일 이름이 충돌하는 경우 새 정보를 입력 할 수 있습니다. 예를 들면 다음과 같습니다.

File 'xyz.gpg' exists. Overwrite? (y/N)n
Enter new filename: xyz2.gpg

그렇지 --batch않으면 빨리 실패 할 것입니다....failed: File exists


원래 verbose 옵션 ( -v)을 먼저 추가 한 경우 다음과 같은 것을 보았을 것입니다.

$ gpg -v -c file --pinentry-mode loopback --passphrase-file=passfile
gpg: Note: '--pinentry-mode' is not considered an option
gpg: Note: '--passphrase-file=passfile' is not considered an option
usage: gpg [options] --symmetric [filename]

-c( --symmetric) 을 (를 ) 먼저 두는 것이 마음에 들지 않는다는 것을 분명히 나타냅니다 .


버그로 --passphrase동반되지 않는 한 gpg2의 옵션 무시 동작을 고려 --batch합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.