Como importar chave gpg secreta (copiada de uma máquina para outra)?

123

Estou tentando copiar minha chave gpg de uma máquina para outra.

Eu faço:

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

Mova os arquivos para a nova máquina e, em seguida:

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]

Tudo parece bom para mim, mas depois:

$ 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

Assim, a mensagem de erro diz que o arquivo foi criptografado com [SUB-ID], que a importação da chave secreta parece indicar que foi importada. (O [SUB-ID] em ambas as mensagens é o mesmo).

Então, estou claramente fazendo algo errado, mas não sei o quê.

    
por user50849 15.02.2015 / 13:37

2 respostas

140

Você precisa adicionar --import à linha de comando para importar a chave privada. Você não precisa usar o sinalizador --allow-secret-key-import . De acordo com a página man: "Esta é uma opção obsoleta e não é usada em nenhum lugar".

gpg --import private.key
    
por 15.02.2015 / 14:28
52

Acima é apenas uma resposta parcial. A resposta completa é:

gpg --import private.key
  • Dado o KEYID (por exemplo, FA0339620046E260 ) da saída:

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN>
    # enter y<RETURN>
    
  • OU use o comando automatizado abaixo:

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

Por fim, verifique se essa chave agora é confiável com [ultimate] em vez de [unknown]

gpg --list-keys
    
por 15.09.2017 / 07:09

Tags