전달 및 gpg : 공개 키 없음


13

패스 를 꽤 오랫동안 사용하고 있습니다. 하지만 키 저장소와 gpg 키를 다른 컴퓨터로 내 보낸 후 다음과 같은 출력이 표시됩니다.

$ gpg --list-key
/home/shved/.gnupg/pubring.gpg
------------------------------
pub   2048R/FA829B53 2015-04-28
uid       [ultimate] Yury Shvedov (shved) <shved@lvk.cs.msu.su>
sub   2048R/74270D4A 2015-04-28

내 키는 가져 와서 신뢰할 수 있지만 사용할 수는 없습니다.

pass insert test
Enter password for test: 
Retype password for test: 
gpg: 2048R/FA829B53: skipped: No public key
gpg: [stdin]: encryption failed: No public key
fatal: pathspec '/home/shved/.password-store/test.gpg' did not match any files

키를 다시 사용하려면 어떻게해야합니까?

답변:


12

pass 는 gnupg2 사용하는데, gnupg 1.x와 키링을 공유하지 않습니다.

gnupg 대신 gnupg2를 사용하여 키를 다시 가져 오십시오. 대상 머신에서 gnupg 키를 이미 가지고 있다면 :

$ gpg --export-secret-keys > keyfile
$ gpg2 --import keyfile

가져온 후 키의 신뢰를 업데이트해야 할 수도 있습니다. Secret key is available.가져 오기에 성공하면 메시지 가 표시됩니다.

$ gpg2 --edit-key FA829B53
[...]
Secret key is available.

sec  rsa4096/FA829B53
     created: 2015-03-14  expires: 2017-03-13  usage: SC  
     trust: unknown      validity: ultimate
ssb  rsa4096/74270D4A
     created: 2015-03-14  expires: 2017-03-13  usage: E   
[ultimate] (1). Yury Shvedov (shved) <shved@lvk.cs.msu.su>

이제 키의 신뢰를 업데이트하십시오.

gpg> trust
[...]
Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y
[...]
gpg> save

pass (적어도 버전 1.6.3)는 gpgnot을 사용합니다 gpg2. 그리고 gpg2는 단지 재 설계입니다. 버전 2.1에서만 일부 변경 사항이있었습니다 (공개 키링에서 공개 및 개인 키 결합)
Anthon

내 버전 (1.6.5)에는 해당되지 않습니다. 소스 코드에서 : 10 GPG = "gpg"11 내보내기 GPG_TTY = "$ {GPG_TTY :-$ (tty 2> / dev / null)}"12 어느 gpg2 &> / dev / null && GPG = "gpg2"13 [ [-n $ GPG_AGENT_INFO || $ GPG == "gpg2"]] && GPG_OPTS + = ( "--batch" "--use-agent") 이것은 gpg2가 같은 시스템에 존재하지 않으면 'pass'가 gpg를 사용한다는 것을 의미합니다.
Łukasz Lis

1
따라서 gpg2가 설치되어 있지 않으면 gpg를 사용하고 패스 목적으로 호환 가능합니다. 그렇지 않으면 pass를 사용하기 시작한 후 언젠가 gpg2를 설치하면 끔찍한 문제가 발생합니다 (처음으로해서는 안됩니다) 때로는 "저장소"디렉토리에 암호화되지 않은 데이터가 남습니다).
Anthon

첫째, 이것은 당신이 첫 번째 답장에서 주장한 것이 아닙니다. 둘째, 당신은 열쇠 고리를 공유하지 않는 그들에 대한 나의 요점에 대답하지 않았습니다. 셋째, 적절한 비밀 키 주어지면 메시지를 해독 할 수 있다는 점에서만 호환됩니다 .
Łukasz Lis

7

출력 라인

gpg: 2048R/FA829B53: skipped: No public key

잘못된 pass초기화를 보여줍니다 . pass명령으로 초기화 하는 pass init 2048R/FA829B53반면 명령으로 초기화 해야합니다 pass init FA829B53. 이 문제를 해결하기 위해 당신은 파일의 내용을 변경해야합니다 ~/.password-store/.gpg-id에서 2048R/FA829B53에 대한 FA829B53변경 사항을 커밋합니다.

추신

@ Łukasz Lis의 모든 조언은 정확하며 완료해야합니다. 다른 경우에는 패스를 해독 할 수 없습니다.

$ pass -c test

오류가 발생합니다. gpg: decryption failed: No secret key


유능한. (mis-) type 일 수 있습니다 pass init SomethigElseThanFirstStore.
Nikos Alexandris

0

새 저장소를 만들 때이 사실을 알았고 "2048R / FA829B53"과 같은 키 ID로 초기화했습니다. 과거에는 어떻게했는지 생각했고 이전 백업을 보면 .gpg_id가 다릅니다.

그러나 이제는 FA829B53 만 사용 된 것으로 보이며 현재 매뉴얼 페이지에서 작성자는 자신의 이메일 주소를 사용합니다.

gpg_id 파일을 확인했습니다. 새로운 상점에서는 FA829B53이며 다른 줄은 없습니다.


0

신뢰할 수있는 키가 파일에서 동일한 지 확인하십시오. ~/.password-store/.gpg-id


이것은 질문에 대한 답변을 제공하지 않습니다. 저자에게 비평을하거나 설명을 요청하려면 게시물 아래에 의견을 남겨주십시오. - 검토에서
Kevdog777

실제로 나는 똑같은 문제를 겪었다. 나는 이것을 해결한다
m3asmi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.