No hay un método incorporado para hacer esto, pero es lo suficientemente simple como para crear una prueba que no modifica nada y le permite simplemente verificar su frase de contraseña.
No lo especificó, así que asumiré que está usando la versión GnuPG menor que v2 y está en Linux con Bash para su intérprete de línea de comandos.
Daré el comando aquí y a continuación explicaré qué hace cada parte - (nota: lo siguiente es para la serie GnuPG versión 1, ver más abajo para la serie GnuPG v2)
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 algo de texto para firmar en GnuPG echo "1234" |
, porque realmente no queremos firmar nada, esto es solo una prueba, por lo que firmaremos un texto inútil.
A continuación, 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, es posible que no 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 decimos a gpg que coloque los datos firmados directamente en el /dev/null
archivo, lo que significa que lo descartamos y no escribimos el resultado en la terminal. NOTA: si no está utilizando alguna variante de Linux / Unix, es posible que este archivo no exista. En Windows, puede que tenga que permitirle que escriba los datos firmados en la pantalla simplemente omitiendo la -o /dev/null
parte.
A continuación, especificamos la clave con la que queremos hacer nuestra prueba usando --local-user 012345
. Puede usar KeyID para una máxima especificidad, o usar un nombre de usuario, lo 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. A -
continuación, solo le dice a GnuPG que obtenga los datos para firmar desde la entrada estándar, que es la primera parte del comando que le 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 solo se agrega para mayor claridad, porque de lo contrario, el éxito del comando anterior se indicaría sin ningún resultado.
Espero que sea lo suficientemente claro para que comprenda lo que está sucediendo y cómo puede usarlo para realizar las pruebas que desea hacer. Si alguna parte no está clara o no la entiende, estaré encantado de aclarar. ¡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"
La razón es que GnuPG v2 espera que la frase de contraseña se recupere a través de un agente, por lo que no podemos deshabilitar el uso del agente con --no-use-agent
y tener el efecto deseado; en su lugar, necesitamos 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
.
gpg --local-user <KEYID> -as
. Esto solo permite que el agente solicite la contraseña y le diga si fue correcta (luego no hace nada).gpg -o /dev/null --local-user <KEYID> -as <(echo 1234) && echo "The correct passphrase was entered for this key"
--passphrase-fd 1
? leer desde stdout? Esto funciona para mí:gpg2 -aso - <(echo 1234); echo $?
. Úseloecho RELOADAGENT | gpg-connect-agent
para olvidar frases de contraseña.Esta es una línea de comando más corta para verificar si la contraseña es correcta:
fuente
Para mí, la forma simplista de verificar la contraseña es usar
gpg --passwd
taquigrafía. Intenta cambiar la frase de contraseña y el paso es confirmar la frase de contraseña anterior, y luego puede hacer clic en 'cancelar' en el indicador de la nueva frase de contraseña y esto mantiene la frase de contraseña intacta.fuente
Advertencia: no use el eco
gpg -o /dev/null
como lo sugiere la respuesta principal aquí. Esto hará que / dev / null tenga un permiso no válido y corrompa el/dev/null
archivo. Puede verificar el permiso del archivo / dev / null al ejecutar este comando para demostrarlo.Puedes usar esto:
También creé un script bash para esto (este funciona con Centos 8). Este script le pedirá una contraseña, si no es válida, seguirá pidiendo que introduzca una contraseña válida. Además, si ingresa un KEY_ID incorrecto o no existente como argumento, también puede validarlo:
Salida de muestra si no hay ninguna contraseña almacenada en caché en gpg-agent:
Salida de muestra si se ingresa una frase de contraseña no válida (seguirá preguntando):
Salida de muestra si se ingresa una contraseña válida:
Cuando se almacena en caché una contraseña válida, la próxima vez que ejecute este script, no le pedirá que ingrese la contraseña. Entonces este script da la solución a su pregunta; "Solo confirma que estoy usando la frase de contraseña correcta"
fuente