Agente de llaves SSH en Manjaro

ssh linux archlinux terminal

Este es un post corto y mas especifico de una distribución, en este caso de Manjaro, que como sabemos tiene de base a Archlinux.

El objetivo de este post es activar el agente de llaves SSH, como podemos encontrar en muchos otros post en internet, podemos agregar unas cuantas lineas a nuestro archivo .bashrc .bash_profile o .zshrc o .zshenv para iniciar el agente de llaves SSH, pero me encontre con la necesidad de interactuar con el agente desde programas gráficos, y algunos de estos no trabajaban con las variables de entorno si lo iniciaba a través de los archivos antes mencionados.

En el caso de Manjaro, sabemos que trabaja con el tan odiado(sigo sin comprender por qué) Systemd, en este caso voy a configurar el agente de llaves para que se inicie con la sesión del usuario, usando systemd/user de ésta forma los programás gráficos trabajan sin problemas con el agente.

Esto lo podemos encontrar en la tan bien documentada wiki de Archlinux https://wiki.archlinux.org/index.php/SSH_keys#SSH_agents

Resumiendo, lo primero que hay que revisar es si el directorio de systemd/user se encuentra creado:

$ cd /home/tuusuario/.config/systemd/user

si nos permite movernos a ese directorio, éste está creado, por el contrario si marca un error, procedemos a crearlo:

$ mkdir -p /home/tuusuario/.config/systemd/user

una vez creado abrimos nuestro editor favorito y creamos el archivo de configuracion de inicio del agente de llaves:

$ nano ~/.config/systemd/user/ssh-agent.service

y añadimos lo siguiente al archivo:

[Unit]
Description=SSH key agent

[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target

Una vez añadido, guardamos el archivo, y añadimos esta linea al siguiente archivo (si no lo tenemos creado lo creamos):

$ nano ~/.pam_environment
SSH_AUTH_SOCK DEFAULT="${XDG_RUNTIME_DIR}/ssh-agent.socket"

guardamos el archivo y ahora habilitamos el servicio y lo iniciamos:

$ systemctl --user enable ssh-agent.service
$ systemctl --user start ssh-agent.service

Podemos revisar si el agente está funcionando agregando una llave y revisando si está agregada con el siguiente comando que listará las llaves agregadas:

$ ssh-add -L