El objetivo de esta entrada no es más que resumir los pasos que haríamos para empezar a usar git en nuestro PC. Linux, por supuesto. Básicamente en esta entrada veremos cómo setear los parámetros mínimos de configuración global, y cómo dejarlo listo para poder firmar nuestros commits (en GitHub), para que el resto de compañeros puedan confiar en que nuestros commits han estado hechos, en efecto, por nosotros.
Setear nuestro usuario en la conf global de git
Lo primero para empezar a usar git en nuestro sistema es setear nuestro usuario y email. Lo haremos en la configuración global de git y básicamente seguiremos los pasos aquí descritos.
1 2 |
[adri@helloit ~]$ git config --global user.name "Adrian Perez" |
1 2 3 |
[adri@helloit ~]$ git config --list user.name=Adrian Perez user.email=adrian.perez@helloit.es |
Vale, ¿pero qué es la configuración global? En git, básicamente, contamos con tres niveles de configuración:
- /etc/gitconfig: Contiene los valores que se aplican a todos los usuarios del sistema y a sus repositorios. Este es el fichero que se modifica/consulta al pasarle la opción «–system» al hacer «git config». Requiere permisos de superusuario.
- ~/.gitconfig or ~/.config/git/config: Define los valores configurados para tí, el usuario. Aquí usaríamos la opción «–global» en el «git config».
- .git/config: finalmente, tenemos el fichero config dentro del propio repo de git. Define los valores específicos para ese repositorio.
GPG
Ahora que hemos seteado quién somos, en nuestra configuración global de git, podemos pasar a ver qué hace falta para firmar nuestros commits con GPG.
Si no hemos hecho nada respecto a las claves GPG, al ejecutar el comando gpg por primera vez, se nos crearán la estructura y ficheros de configuraciones iniciales.
1 2 3 4 5 6 |
[adri@helloit ~]$ gpg --list-keys gpg: directorio `/home/adri/.gnupg' creado gpg: creado un nuevo fichero de configuración `/home/adri/.gnupg/gpg.conf' gpg: ATENCIÓN: aún no se han activado en esta ejecución las opciones en `/home/adri/.gnupg/gpg.conf' gpg: almacén `/home/adri/.gnupg/pubring.gpg' creado gpg: /home/adri/.gnupg/trustdb.gpg: se ha creado base de datos de confianza |
Podremos generar nuestra primera clave tal y como sigue:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
[adri@helloity ~]$ gpg --gen-key gpg (GnuPG) 1.4.22; Copyright (C) 2015 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: almacén `/home/adri/.gnupg/secring.gpg' creado Seleccione el tipo de clave deseado: (1) RSA y RSA (por defecto) (2) DSA y ElGamal (por defecto) (3) DSA (sólo firmar) (4) RSA (sólo firmar) ¿Su elección?1 las claves RSA pueden tener entre 1024 y 4096 bits de longitud. ¿De qué tamaño quiere la clave? (2048) El tamaño requerido es de 2048 bits Especifique el período de validez de la clave. 0 = la clave nunca caduca <n> = la clave caduca en n días <n>w = la clave caduca en n semanas <n>m = la clave caduca en n meses <n>y = la clave caduca en n años ¿Validez de la clave (0)? 0 La clave nunca caduca ¿Es correcto? (s/n) s Necesita un identificador de usuario para identificar su clave. El programa construye el identificador de usuario a partir del Nombre Real, Comentario y Dirección de Correo Electrónico de esta forma: "Heinrich Heine (Der Dichter) <[email protected]>" Nombre y apellidos: Adrian Perez Dirección de correo electrónico: adrian.perez@helloit.es Comentario: Está usando el juego de caracteres `utf-8'. Ha seleccionado este identificador de usuario: "Adrian Perez <[email protected]>" ¿Cambia (N)ombre, (C)omentario, (D)irección o (V)ale/(S)alir? V Necesita una contraseña para proteger su clave secreta. |
Si has probado de realizar este proceso en un mac y estás teniendo problemas, visita este enlace.
Durante el proceso de creación de nuestra clave, como vemos, deberemos introducir el tipo de clave, la longitud, así como nuestros detalles. Una vez lo tengamos, ya podremos volver a ejecutar el comando «gpg –list-keys» o mejor aun, listarlo con formato LONG.
Con «list-keys» se nos mostrará una entrada para la clave PUBlica, el UserID, y SUBkey. [+info]
1 2 3 4 5 6 |
[adri@helloit ~]$ gpg --list-keys /home/adri/.gnupg/pubring.gpg ----------------------------- pub 2048R/AC324969 2018-04-19 uid Adrian Perez <adrian.perez@helloit.es> sub 2048R/852B628C 2018-04-19 |
En cualquier caso, podemos volver a listar las claves con formato LONG, para ya así pasar a exportarlas:
1 2 3 4 5 6 |
[adri@helloit ~]$ gpg --list-secret-keys --keyid-format LONG /home/adri/.gnupg/secring.gpg ----------------------------- sec 2048R/748E21E2AC324969 2018-04-19 uid Adrian Perez <adrian.perez@helloit.es> ssb 2048R/8EABDD09852B628C 2018-04-19 |
1 2 3 |
[adri@helloit ~]$ gpg --armor --export 748E21E2AC324969 -----BEGIN PGP PUBLIC KEY BLOCK----- ... |
Con el comando anterior, mostraremos por pantalla la clave pública que deberemos copiar en nuestro perfil de GitHub. Una vez seteada nuestra clave pública en nuestro perfil de GitHub volveremos a usar la configuración global de git para setear la key con la que cifraremos los commits:
1 |
$ git config --global user.signingkey 748E21E2AC324969 |
A partir de entonces, ya podremos empezar a firmar nuestros commits con el flag «-S»:
1 |
$ git commit -a -S -m 'signed commit' |
O aun mejor, seteando la variable global commit-gpgsign a true, para no tener que recordar usar la opción «-S» al commitear y por tanto, por defecto firmar todos nuestros commits:
1 |
$ git config --global commit.gpgsign true |
Fuentes:
https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work
https://help.github.com/articles/signing-commits-with-gpg/
https://help.github.com/articles/adding-a-new-gpg-key-to-your-github-account/
https://help.github.com/articles/generating-a-new-gpg-key/