키보드 상호 작용없이 gpg 암호화 파일 [닫기]


84

crontab 내에서 다음 명령을 실행하여 파일을 암호화하고 키보드 상호 작용을 원하지 않습니다.

echo "PASSPHRASE" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT

하지만이 대답이 있습니다.

gpg: C042XXXX: There is no assurance this key belongs to the named user

pub  40XXX/C042XXXX 2012-01-11 Name LastName. (comment) <user@email.com>
 Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXX
      Subkey fingerprint: XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXX

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) 

--passphrase-fd는 첫 번째 줄만 읽으므로 실행하면 어떻게됩니까 echo -e "PASSPHRASE" "\nyes" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT?
David Costa

man page 누구? --batch--yes.
u0b34a0f6ae 2013

답변:


76

David가 말했듯이 여기서 문제는 gpg가 암호화에 사용하는 공개 키를 신뢰하지 않는다는 것입니다. 그가 설명한대로 열쇠에 서명 할 수 있습니다.

대안 (특히 키가 가끔 변경 될 수있는 경우)은 --trust-model alwaysgpg 명령을 사용하는 것입니다.

다음은 man 페이지의 관련 부분입니다.

--trust-model pgp|classic|direct|always|auto

     Set what trust model GnuPG should follow. The models are:

     pgp    This is the Web of Trust combined with trust signatures as used in
            PGP 5.x and later. This is the default trust model when creating a
            new trust database.

     classic
            This is the standard Web of Trust as used in PGP 2.x and earlier.

     direct Key validity is set directly by the user and  not  calculated  via
            the Web of Trust.

     always Skip  key  validation  and  assume that used keys are always fully
            trusted. You generally won't use this unless you  are  using  some
            external  validation  scheme.  This  option  also  suppresses  the
            "[uncertain]" tag printed with signature checks when there  is  no
            evidence that the user ID is bound to the key.

     auto   Select  the  trust  model depending on whatever the internal trust
            database says. This is  the  default  model  if  such  a  database
            already exists.

시스템이 그것이 코드라고 생각하는 이유를 이해하지 못합니다. 견적을 클릭했습니다. 코드가 아닙니다. 편집 할 때 따옴표로만 표시됩니다 (색상 없음). 기묘한.
rsaw

4
텍스트가 정렬 할 때 공백을 사용하기 때문입니다.
Tomáš Fejfar 2013-06-25

이것은 나에게 정답입니다! 여러분 감사합니다
eigenfield

46

다음은 gpg2를 기반으로 한 내 솔루션입니다 (하지만 비슷한 기술을 gpg에 적용 할 수 있다고 확신합니다)

$ gpg2 --edit-key {recipient email address}  
> trust
> 5 (select 5 if you ultimately trust the key) 
> save

이것은 gpg2에게 키를 완전히 신뢰하도록 지시하므로 프롬프트없이 암호화 할 수 있습니다.


1
이것은 trust-db를 즉시 업데이트하며 저장할 필요가 없습니다.
레인

12
이것은 키 유효성이 아닌 소유자 신뢰를 설정합니다. Ultimate Trust는 자신의 키만을위한 것입니다. 즉, Ultimately Trusted Identity에 의해 서명 된 모든 것은 귀하가 서명 한대로 처리됩니다. 그러니 그것이 당신의 열쇠가 아니라면 신뢰를 궁극적으로 설정하지 마십시오. 문제는 키 유효성입니다. 이 문제를 해결하려면 키에 서명해야합니다. (로컬 전용 서명 및 지문 확인 고려)
x539

3
x539가 맞습니다. 후 gpg2 --edit-key <key-id>당신은 어떻게 lsign하고 save. 나는 트러스트 5가 이것에 대한 잘못된 사용이라고 생각합니다 (오해), (나에게는) x539가 말한 것 때문에 효과가 없었습니다 (쓸모없는).
n611x007

이 기능은 일반에서도 작동 gpg합니다. gpg2:)
Markus

10

해킹 접근 방식 :

echo -n PASSPHRASE > phrase
chmod 400 phrase #Make sure ONLY the user running the cron job can read the phrase
yes | gpg --passphrase-fd 3 --recipient USER --encrypt FILENAME.txt 3<phrase

근본적인 문제는 USER에 대한 키가 서명되지 않았다는 것입니다. 신뢰할 수있는 경우 다음으로 서명 할 수 있습니다.

gpg --edit-key USER sign

구성에 따라 몇 가지 질문이있을 것입니다. 이 작업을 한 번 수행하면 crontab으로 이동하는 것이 좋습니다. 내가 제안한 솔루션을 사용하여 암호를 별도의 파일에 넣고 명령이 실행되는 한 명의 사용자 만 읽을 수 있도록하는 것이 좋습니다. 그렇게하면을 죽이고 yes |암호화 라인을 가질 수 있습니다 .


1
서명 키 방법 인 gpg2 --edit-key USER sign 모두를 시도했지만 이제 서명되었지만 여전히 trust : unknown으로 표시됩니다. 그리고 배치는 여전히 프롬프트없이 실행되지 않습니다
nycynik

2
나는 lsign더 나은 아이디어 라고 생각합니다. 당신이 서명한다면 그렇지 않습니까? 로컬로 키에 서명하면 그 서명은 컴퓨터에 남아 있습니다. 그러나 단순히 서명하면 공개로 간주되므로 --send-keys? 를 수행하면 키 서버로 전송됩니다 .
n611x007

2

이 명령을 사용하면 도움이 될 것입니다.

echo "PASSPHRASE" | gpg --passphrase-fd 0 --always-trust -r USER --encrypt FILENAME.TX

1

나도 이것에 부딪쳤다. 흥미로운 일을 할 수있는 사인 키를 얻을 수 없었습니다. 내가 한 일은 다음과 같습니다.

gpg 키를 만듭니다.

gpg --gen-key

긴 키 ID 가져 오기 (결과는 5 번째 열에 있음) :

gpg --list-keys --with-colon name@domain.tld

~ / gnupg / gpg.conf에 신뢰할 수있는 키 줄 추가

trusted-key 16DIGITALPHANUMERICKEYID

백업 스크립트의 gpg 라인 :

gpg -e -r name@domain.tld backup_file.tgz

cron 디버깅 : 또한 cron 명령 줄의 로그 파일에 stdout 및 stderr를 전송하여 cron 더 버깅 출력을 캡처하고 있습니다. 알아두면 도움이됩니다


1
아니, 그러지 마. 추가 trusted-key라인은하는 gpg.conf원인이됩니다 gpg항상 그 키를 신뢰 사용자 자신의 키를 완전히 하나로서 , 나쁜 일이다 . 전달 --trusted-keyint로서 인수 및에서만 이러한 특정 경우 것은 허용 (그대로 통과 --trust-model=always동일한 방식으로 ).
Blacklight Shining 2015

내 열쇠입니다. 내가 원하는대로 정확히 신뢰할 수있는 것으로 표시하지 않습니까?
jorfus

1
그것의 경우 실제로 키 (저는 개인적으로 그렇게하는 것을 선호하지만, 다음 예, 그것은 궁극적으로 신뢰할 표시 --edit-key되지 않은 추가하여 trusted-key선). 질문자 는 불평 하는 것이 자신의 열쇠 라고 말하지 않았습니다 gpg.
Blacklight Shining

1

저는 저처럼 많은 사람들이 질문의 '키보드 상호 작용없이'부분을 위해 여기에 온다고 생각합니다. gpg2 및 gpg-agent를 사용하면 키보드 상호 작용없이 항목을 서명 / 암호화 / 암호 해독하는 것이 매우 복잡해졌습니다. 일반 텍스트 개인 키 암호를 텍스트 파일에 저장할 때 서명을 만드는 방법은 다음과 같습니다.

cat something_so_sign.xzy | gpg \
    --passphrase-file "plaintext_passphrase.txt" \
    --batch \
    --pinentry-mode loopback \
    -bsa

필요에 따라 -b -s -a를 변경하십시오. 다른 스위치는 필수입니다. 그냥 사용할 수도 있습니다 --passphrase 'SECRET'. 이미 지적했듯이 조심하십시오. 물론 일반 텍스트 파일은 그다지 좋지 않습니다.


0

또는 키에 서명하십시오 (물론 지문을 확인한 후) :

gpg --sign-key <recipient email address>

그 후에는 키를 완전히 신뢰합니다.

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately

5
소유자를 신뢰하는 것은이 문제와 관련이 없습니다. 당신이 서명에 관하여 그를 신뢰하는 경우에만 다른 키와 소유자 확인 / 소유자의 신뢰를 설정
x539을

Ianes는 키 신뢰에 대한 업데이트를 위해 답변을 편집하지 않으시겠습니까? 현재 오해의 소지가있을 수 있습니다 ... 또한 --lsign-key더 나은 아이디어 일 수 있습니다. 참조 내 다른 의견 lsign에 대한
n611x007

0

여기에 이미지 설명 입력

이메일 ID로 처음으로 인증서를 만들 때 완전히 신뢰할 수있는 인증서를 선택한 다음 파일을 암호화 할 때마다 질문을하지 않을 것입니다.

키가 사용자 ID에 이름이 지정된 사람에게 속하는지 확실하지 않습니다. 당신이하고있는 일 을 정말로 알고 있다면 , 다음 질문에 예라고 대답 할 수 있습니다.

그래도이 키를 사용 하시겠습니까? (y / N)


0

다른 접근 방식 : 민감한 데이터에 대한 액세스거부 하기 위해 (타사 키를 사용하여 암호화하는 대신) ** PUBLIC 키만 * 데이터를 보호하려는 서버에 업로드하고 해당 키를 사용하여 암호화합니다. 이것은 자동화를 촉진하는 암호를 제공하기위한 대화 형 프롬프트의 필요성을 없애 주며 무엇보다도 PRIVATE 키는 공용 서버와 분리되어 있습니다.

gpg --batch --yes --trust-model always -r $YOURPUBKEYEMAILADDRESS -e ./file.txt

그러나 자신의 공개 키로 암호화 하지 스위치 사용이 --trust-model always약간 복잡합니다. 어쨌든 데이터에 대한 액세스를 거부하는 문제를 해결하는 다른 방법입니다. HTH- 테렌스 훌라 한

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