Ahorra tiempo integrando git con pass.

Los git push han sido muy frecuentes últimamente, asociados casi siempre a algunos proyectos opensource en los que he estado participando. Y tener que poner el nombre de usuario y contraseña cada vez que voy a hacer un push, ya se me hizo tedioso y aburrido. Alguna solución tiene que existir.

Pues sí. Y viene de la mano de pass, el gestor standard de contraseñas. Esta utilidad permite crear una base de datos donde podemos guardar información de valor, por ejemplo, contraseñas. Y todo estará protegido por un password maestro.

0. Objetivo?

Evitar teclear las credenciales de los servicios de alojamiento de código (github/gitlab/framagit/etc)

1. Instalar pass y configurar credenciales

pass se encargará se almacenar nuestras credenciales para cada servicio. Primero lo instalamos, inicializamos y procedemos a guardar credenciales en el.

sudo apt install pass
pass init <password-maestro>
pass insert --multiline dev/github
<contraseña>
<nombre de usuario>
Ctrl+D

El primero de estos comandos instala pass en nuestro sistema. Luego se inicializa utilizando el password maestro como llave para todo lo que guardaremos acá.

A continuación procedemos a crear el primer registro de credenciales, en este caso para Github. Y para ser ordenados, lo guardaremos dentro de la carpeta dev. Es por eso que el identificador de esta credencial es dev/github. Se especifica el parámetro –multiline para poder guardar varias líneas en el mismo registro:

  • en la primera línea la contraseña
  • en la segunda línea el nombre de usuario que utilizamos para autenticarnos en ese servicio.

Esto es una convención utilizada por varias aplicaciones que utilizan a pass. Finalizamos la entrada presionando Ctrl+D.

Si utilizamos varios servicios de alojamiento de código como gitlab u otro, pues repetimos el paso pass insert –multiline <identificador>.

2. Instalar y configurar pass-git-helper

pass-git-helper es la utilidad encargada de establecer la conexión entre git y pass. Para instalarla debemos ejecutar

git clone https://github.com/languitar/pass-git-helper
cd pass-git-helper
sudo python3 setup.py install

Una vez instalado procedemos a su «activación» ejecutando.

git config --global credential.helper /full/path/to/pass-git-helper

3. Mapear las credenciales

Una vez configurado debemos especificar que credenciales se deben usar en cada caso. Esto lo lograremos con un fichero de mapeo que vamos a crear en `~/.config/pass-git-helper/git-pass-mapping.ini` y cuyo contenido deberá ser similar a:

[github.com]
target=dev/github

[gitlab.com]
target=dev/gitlab

Entre corchetes especificamos el dominio del servicio de control de versiones y a continuación, a target le asignamos el identificador de la credencial del mismo que creamos en el paso 1.

O sea, cuando se realice una operación contra github.com que necesite de las credenciales en este servicio, el helper le solicitará a pass la contraseña almacenada en dev/github. Recordemos que la primera línea de este registro es la contraseña y la 2 el nombre de usuario.

Conclusiones

  • es tedioso tener que escribir nuestras credenciales cada vez que hacemos un git clone/pull/push.
  • pass es una excelente utilidad para guardar información privada. Se puede gestionar con su cliente QtPass.
  • git-pass-helper permite integrar git con pass
  • el identificador de la credenciales es solo un nombre. Le asignamos dev/github para que fuera mas claro
  • el fichero de mapping es el encargado de definir que credenciales (de las almacenadas con pass) serán usadas para acceder a cada uno de los dominios especificados entre [].

Y de esta manera nos ahorramos el tener que estar continuamente tecleando nuestras credenciales cuando vamos a interactuar con este tipo de servicios.

¿Te resultó interesante? Compártelo ...



Publicado por glpzzz

https://glpzzz.github.io/ » Facebook » Twitter » Linkedin » Forma parte de GUTL desde el 18 junio, 2019.

Este artículo tiene 11 comentarios

  1. Sin desmerecer la herramienta que describes, KeePassX/C ¿sirven para lo mismo?. No utilizo esas plataformas, por eso mi inquietud.

    Muy útil tu artículo, fácil de implementar.

    Saludos.

  2. No conozco a esa, pero la veo citada a menudo en el mismo contexto que pass.

    Llegué a pass pues Lubuntu, mi sistema base, viene con el cliente QtPass.

    Además, otra de las utilidades suckless que uso es passmenu, un script para dmenu que hace muy cómoda la selección de credenciales.

  3. Git almacena las contraseñas si le dicen que lo haga, solo una linea de codigo:

    $ git config –global credential.helper store

    Ya con eso no pedirá que escriban la contraseña de nuevo.

  4. Porqué no usar ssh. Es seguro, rápido, y no requiere de muchos pasos.

    En cuanto a el parámetro que te pasó @Dave.rs, puedes optar por mantener las claves en cache durante un tiempo (15 min):

    `git config –global credential.helper cache`

    Las claves no son guardadas en disco, y se eliminan de la cache después de 15 min.

    Saludos.

    • Pero el objetivo es no tener que escribir la contraseña otra vez. Pues si realmente hace falta garantizar la seguridad de las credenciales, la solución es buena, no cabe duda.
      Conectar por ssh cae perfecto tambien.

Los comentarios están cerrados.