Hub documentation
Firmar commits con GPG
Firmar commits con GPG
git tiene una capa de autenticación para controlar quién puede enviar commits a un repositorio, pero no autentica a los autores de los commits.
En otras palabras, puedes confirmar los cambios como Elon Musk <elon@tesla.com>, enviarlos a tu host de git preferido (por ejemplo, github.com) y tu confirmación enlazará con el perfil de GitHub de Elon. (¡Pruébalo! Pero no nos culpes si Elon se enoja contigo por suplantar su identidad.)
Las razones por las que implementamos la firma GPG fueron:
- Para ofrecer una seguridad más granular, especialmente a medida que cada vez más usuarios de Enterprise dependen del Hub.
- Para proporcionar benchmarks de ML respaldados por una fuente criptográficamente segura.
Vea Cómo (y por qué) firmar los commits de git de Ale Segala para obtener más contexto.
Puedes demostrar que un commit fue creado por ti con GNU Privacy Guard (GPG) y un servidor de claves. GPG es una herramienta criptográfica que se utiliza para verificar la autenticidad del origen de un mensaje. A continuación, te explicamos cómo configurar esto en Hugging Face.
El libro Pro Git es, como siempre, un buen recurso sobre la firma de commits: Pro Git: Firmar tu trabajo.
Configuración de la verificación de commits firmados
Deberás instalar GPG en tu sistema para ejecutar los siguientes comandos.
Está incluido por defecto en la mayoría de las distribuciones de Linux. En Windows, está incluido en Git Bash (que viene con
gitpara Windows).
Puedes firmar tus commits localmente usando GPG. Luego, configura tu perfil para marcar estos commits como verificados en el Hub, para que otras personas puedan tener la confianza de que provienen de una fuente confiable.
Para una explicación más detallada sobre cómo interactúan git y GPG, visite la documentación de git sobre el tema
Los commits pueden tener los siguientes estados de firma:
| Estado | Explicación |
|---|---|
| Verificado | El commit está firmado y la firma se ha verificado |
| No verificado | El commit está firmado, pero la firma no se pudo verificar |
| Sin estado de firma | El commit no está firmado |
Para que un commit se marque como verificado, debes subir la clave pública utilizada para firmarlo en tu cuenta de Hugging Face.
Use the gpg --list-secret-keys command to list the GPG keys for which you have both a public and private key.
A private key is required for signing commits or tags.
Si no tienes un par de claves GPG o no deseas usar las claves existentes para firmar tus commits, ve a Generar una nueva clave GPG.
En caso contrario, vaya directamente a Añadir una clave GPG a su cuenta.
Generar una nueva clave GPG
Para generar una clave GPG, ejecuta lo siguiente:
gpg --gen-key
A continuación, GPG te guiará a través del proceso de creación de un par de claves GPG.
Asegúrate de especificar una dirección de correo electrónico para esta clave y de que la dirección de correo electrónico coincida con la que especificaste en tu cuenta de Hugging Face.
Agregar una clave GPG a tu cuenta
Primero, seleccione o genere una clave GPG en su computadora. Asegúrese de que la dirección de correo electrónico de la clave coincida con la de su cuenta de Hugging Face y de que el correo de su cuenta esté verificado.
Exporta la parte pública de la clave seleccionada:
gpg --armor --export <YOUR KEY ID>- Luego visita la página de configuración de tu perfil y haz clic en Add GPG Key.
Copia y pega la salida del comando gpg --export en el área de texto y haz clic en Add Key.
- ¡Felicidades! 🎉 Acabas de añadir una clave GPG a tu cuenta.
Configura git para firmar tus commits con GPG
El último paso es configurar git para firmar tus commits:
git config user.signingkey <Your GPG Key ID> git config user.email <Your email on hf.co>
Luego, añade la bandera -S a tus comandos de git commit para firmar tus commits.
git commit -S -m "My first signed commit"Una vez que se haya enviado al Hub, deberías ver el commit con la insignia “Verified”.
Update on GitHubPara firmar todos los commits de forma predeterminada en cualquier repositorio local de tu computadora, puedes ejecutar
git config —global commit.gpgsign true.