Solución:
En cuanto al error “cancelado por el usuario”: GnuPG intenta asegurarse de que está leyendo la contraseña directamente desde el terminal, no (por ejemplo) canalizada desde stdin. Para ello, intenta abrir el tty directamente. Desafortunadamente, los permisos de archivos se interponen en el camino: el dispositivo tty es propiedad del usuario con el que inicias sesión. Entonces, solo ese usuario y root pueden abrirlo. GnuPG parece informar el error incorrectamente, diciendo que cancelaste (cuando en realidad se le negó un permiso).
En cuanto a si debería tener una clave separada para el repositorio: sí. Hay un par de razones que me vienen a la mente:
- Un repositorio puede ser mantenido por más de una persona. Todos ellos necesitarán acceder a la clave. Obviamente, no desea darles acceso a su clave personal.
- El software que procesa nuevos paquetes necesitará acceder a la clave. Para muchos repositorios, eso significa que debe mantener la clave disponible en una máquina conectada a Internet. Esto requiere un nivel de seguridad más bajo del que idealmente tendría en su clave personal.
- Si está procesando cargas automáticamente, es posible que incluso deba almacenar la clave sin una frase de contraseña. Obviamente, reduce la seguridad.
- En caso de que su clave personal se vea comprometida, es bueno tener que revocarla. Lo mismo ocurre con el compromiso de la clave del repositorio. Hace que revocar una clave comprometida sea más económico.
Es bastante normal usar su clave personal para firmar la clave del repositorio.
En cuanto a ejecutar la generación de claves como root: no es ideal (no ejecute cosas como root sin una buena razón), pero probablemente no sea un problema.
También tengo este error después de varios ssh -Y a un host.
Me las arreglé para obtener un mensaje para la frase de contraseña agregando el --pinentry-mode loopback
opción.