비밀 gpg 키를 가져 오는 방법 (한 시스템에서 다른 시스템으로 복사)?


153

한 컴퓨터에서 다른 컴퓨터로 gpg 키를 복사하려고합니다.

나는한다:

gpg --export ${ID} > public.key
gpg --export-secret-key ${ID} > private.key

파일을 새 컴퓨터로 이동 한 후 다음을 수행하십시오.

gpg --import public.key
gpg: nyckel [ID]: public key [Name, e-mail] was imported
gpg: Total number of treated keys: 1
gpg:                 imported: 1  (RSA: 1)

gpg --allow-secret-key-import private.key
sec  [?]/[ID] [Creation date] [Name, e-mail]
ssb  [?]/[SUB-ID] [Creation date]

모두 나에게 좋아 보이지만 다음과 같습니다.

$ gpg -d [file].gpg
gpg: encrypted with 4096-bit RSA-key, id [SUB-ID], created [Creation date]
  [Name, e-mail]
gpg: decryption failed: secret key not accessible

따라서 오류 메시지는 파일이 [SUB-ID]로 암호화되었으며 비밀 키 가져 오기가 파일을 가져 왔음을 나타냅니다. (두 메시지의 [SUB-ID]는 동일합니다).

그래서 나는 분명히 잘못하고 있지만 무엇을 모르겠습니다.

답변:


164

--import개인 키를 가져 오려면 명령 줄 에 추가해야합니다 . --allow-secret-key-import플래그를 사용할 필요는 없습니다 . 매뉴얼 페이지에 따르면 : "이 옵션은 더 이상 사용되지 않으며 어느 곳에서도 사용되지 않습니다."

gpg --import private.key

gpg2 -e -r [ID]"이 키가 지정된 사용자에게 속해 있다는 확신이 없다"는 이유를 알고있을 가능성 이 있습니까? 나는 원래 질문에 그것을 포함 시켰지만 나중에 만 눈치 notice습니다.
user50849

1
GnuPG는 어떤 키를 얼마나 신뢰할지 결정하는 데 사용하는 신뢰 데이터베이스를 유지 관리합니다. 예를 들어, 가장 신뢰할 수있는 키로 직접 또는 간접적으로 서명되지 않은 키는 자신의 키를 가장 많이 신뢰하십시오. 빈 데이터베이스로 방금 가져온 후에는 키가 전혀 신뢰되지 않을 수 있습니다. 이 트러스트 데이터베이스는 데이터베이스 또는 키 자체와 분리되어 있으므로 키를 가져와도 이미 트러스트 된 키로 서명하지 않으면 키를 가져와도 트러스트되지 않습니다. 별도로 신뢰하려는 키를 GnuPG로 전환해야합니다.
Celada

3
@ edit-key와 신뢰 명령을 통해 @Celeda, 감사합니다. 키를 신뢰할 수있게했습니다. 내 원래 질문은 한 컴퓨터에서 다른 컴퓨터로 키를 복사하는 방법 이었기 때문에 귀하의 답변에 그것에 대해 뭔가를 추가하는 것이 적절하다고 생각합니다. 나는 당신의 대답을 직접 편집하고 싶지 않으며, 이것에 대해 나보다 훨씬 더 많이 알고있는 것 같습니다.
user50849

나는 내 답변에서 그것에 대해 이야기하기에 충분히 trustdb를 이해한다고 생각하지 않습니다. 내 의견에 모호한 힌트를 사용하여 문제를 해결할 수있어서 기쁩니다.
Celada

좋아, 원래 질문의 제목을 다시 지정하여 대답에 더 적합합니다. 그렇게하면 trustdb에 별도의 질문을 할 수 있습니다. 도와 주셔서 감사합니다. :)
user50849

81

위의 일부 답변입니다. 완전한 대답은 다음과 같습니다.

gpg --import private.key
  • FA0339620046E260출력에서 KEYID (예 :)가 주어지면 :

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN>
    # enter y<RETURN>
    
  • 또는 아래의 자동 명령을 사용하십시오.

    expect -c "spawn gpg --edit-key {KEY} trust quit; send \"5\ry\r\"; expect eof"
    

마지막으로 키 대신에 키를 신뢰할 수 있는지 확인하십시오.[ultimate][unknown]

gpg --list-keys

6
이것이 정답입니다. 훨씬 더 완벽합니다.
벤 린제이

이러한 추가 명령은 무엇을합니까?
Steiny

@Steiny [알 수 없음] 대신 [ultimate]로 키를 신뢰하게합니다. gpgtools.tenderapp.com/kb/faq/…
cmcginty

0

이전 버전의 gpg를 가진 백업에서 가져 왔습니다. 이전 컴퓨터를 사용할 수 없었고 백업 만 사용했기 때문에 먼저 내보낼 수 없었습니다. 이것이 나를 위해 일한 것입니다.

gpg --import old_home_dir/.gnupg/pubring.gpg
gpg --import old_home_dir/.gnupg/secring.gpg

암호를 즉시 입력하지 않고 비밀 키를 가져 오려면 --batch옵션을 사용하십시오 .

공개 키를 확인하려면

gpg --list-keys

비밀 키를 확인하려면

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