gnupg - llave - Cómo usar la línea de comandos gpg para verificar la contraseña es correcta
gpg v1 (1)
No hay un método integrado para hacer esto, pero es lo suficientemente simple como para crear una prueba que no modifique nada y le permite simplemente verificar su frase de contraseña.
No especificó, por lo que supongo que está utilizando la versión GnuPG menos que v2 y está en Linux con Bash para su intérprete de línea de comandos.
Daré el comando aquí y abajo. Explicaré lo que hace cada parte (nota: la siguiente es para la serie 1 de la serie GnuP, ver a continuación para la serie v2 de GnuPG)
echo "1234" | gpg --no-use-agent -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
Lo que hace es primero, canalizar un poco de texto para firmar a GnuPG con echo "1234" |
- porque realmente no queremos firmar nada, esto es solo una prueba, entonces firmaremos un texto inútil.
Luego, le decimos a gpg que no use el agente clave con --no-use-agent
; esto es importante más adelante porque, dependiendo de su agente clave, puede que no se devuelva "0" en caso de éxito, y eso es todo lo que queremos hacer: verificar el éxito de su frase de contraseña.
A continuación, le pedimos a gpg que coloque los datos firmados directamente en el archivo /dev/null
, lo que significa que lo descartamos y no escribimos el resultado en el terminal - NOTA: si no está utilizando alguna variante de Linux / Unix, este archivo puede no existe. En Windows, puede que tenga que permitir que escriba los datos firmados en la pantalla simplemente omitiendo la parte -o /dev/null
.
A continuación, especificamos la clave con la que queremos hacer nuestra prueba utilizando --local-user 012345
. Puede usar el KeyID para obtener la máxima especificidad o usar un nombre de usuario, el que mejor se adapte a sus necesidades.
A continuación, especificamos -as
, que habilita el modo de salida ascii, y establece el modo de contexto para la firma. El -
luego simplemente le dice a GnuPG que los datos se firmen desde la entrada estándar, que es la primera parte del comando que dimos echo "1234" |
.
Y por último, tenemos && echo "A message that indicates success"
- el "&&" significa, si el comando anterior fue exitoso, imprima este mensaje. Esto se acaba de agregar para mayor claridad, ya que el éxito del comando anterior de lo contrario estaría indicado por ninguna salida en absoluto.
Espero que sea lo suficientemente claro como para que entiendas lo que está pasando, y cómo puedes usarlo para hacer las pruebas que deseas hacer. Si alguna parte no está clara o no la comprende, me complacerá aclararla. ¡Buena suerte!
[EDITAR] - Si está utilizando GnuPG v2, el comando anterior deberá modificarse ligeramente, así:
echo "1234" | gpg2 --batch --passphrase-fd 1 -o /dev/null --local-user <KEYID> -as - && echo "The correct passphrase was entered for this key"
El motivo es que GnuPG v2 espera que la frase de contraseña se recupere a través de un agente, por lo que no podemos inhabilitar el uso del agente con --no-use-agent
y tener el efecto deseado; en su lugar, debemos decirle a GnuPG v2 que queremos ejecutar un proceso "por lotes", y recuperar la frase de contraseña de STDIN (estándar en) usando la opción --passphrase-fd 1
.
Intento automatizar copias de seguridad con duplicity
, pero cuando pruebo el resultado, obtengo
gpg: error de descifrado de la clave pública: contraseña incorrecta
Quiero comprobar si la frase de contraseña que estoy usando es en realidad la frase de contraseña asociada con la clave secreta gpg correspondiente, pero no puedo ver las opciones de la línea de comando gpg para decir "No cifrar ni descifrar nada. Solo confirmar Estoy usando la frase de contraseña correcta ".
Esto sugiere que tal vez estoy (una vez más) malinterpretando a Gnu Privacy Guard. (Tiene predilección por burlarse de mí hasta que lloro).
¿Tiene sentido pedirle a gpg que verifique una frase de contraseña? ¿Si es así, cómo?