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