ssh-agent, gpg-agent y keepassxc🔗
ssh-agent es un agente que permite recordar, por un período, la frase de contraseña de las
llaves privadas SSH una vez introducidas.
Para iniciar a ssh-agent puede usarse el siguiente script de Bash, el cual debe de incluirse directamente (no como función) al
archivo de configuración de Bash: $HOME/.bash_profile y/o $HOME/.bashrc.
runtime_dir="/run/user/$(/usr/bin/id --user)/ssh-agent"
ps aux | grep -v grep | grep -qE "ssh-agent.*${runtime_dir}.*"
if [ $? -ne 0 ]; then
mkdir -p $runtime_dir
rm -f $runtime_dir/socket
echo "# $(date)" > $runtime_dir/environment.sh
/usr/bin/ssh-agent -a $runtime_dir/socket -s
| sed 's/^echo .*$//' \
>> $runtime_dir/environment.sh
fi
Cada vez que se ejecute el archivo de configuración de Bash se cuestionará si ya existe una instancia en ejecución de ssh-agent,
si no es el caso se inicia una instancia de ssh-agent con un socket en el directorio /run/user/1000/ssh-agent (suponiendo que
el ID del usuario sea 1000) y el script de Bash /run/user/1000/ssh-agent/environment.sh.
El script de Bash /run/user/1000/ssh-agent/environment.sh contendrá la definición de las variables SSH_AUTH_SOCK y
SSH_AGENT_PID, las cuales mantendrán sus mismos valores durante una sesión de usuario.
gpg-agent es un agente similar a ssh-agent pero lo hace para llaves privadas GPG.
De igual manera a ssh-agent puede incluirse directamente al archivo de configuración de Bash lo siguiente:
export GPG_TTY="$(/usr/bin/tty)"
export GNUPGHOME="$HOME/.gnupg"
ps aux | grep -v grep | grep -qE "gpg-agent.*${GNUPGHOME}.*"
if [ $? -ne 0 ]; then
/usr/bin/gpg-agent --homedir $GNUPGHOME --options $GNUPGHOME/gpg-agent.conf --daemon
fi
Lo anterior define dos variables necesarias: GPG_TTY y GNUPGHOME, este último establece el directorio de trabajo de gpg-agent.
Se da el argumento --options para indicar el archivo de donde leerá sus opciones de ejecución.
En $GNUPGHOME/gpg-agent.conf se pueden establecer las siguientes opciones:
pinentry-program /usr/bin/pinentry-gtk-2
default-cache-ttl 86400
max-cache-ttl 86400
KeePassXC es un gestor de contraseñas, mediante él es posible registrar llaves privadas SSH de tal manera
que él sea quien las agregue a ssh-agent sin tener que hacerlo de manera manual mediante ssh-add.
Dentro de Tools > Settings > SSH Agent se activa la opción para que KeePassXC interactúe con ssh-agent y al momento de agregar un
nuevo registro de usuario-contraseña se accede a SSH Agent y se registra la llave privada SSH. En Entry > Password es en donde
se registra la frase de contraseña para la llave privada SSH a guardar.
Por el momento KeePassXC no tiene la capacidad de comunicarse con gpg-agent, aunque es posible guardar la frase de contraseña de la
llave privada GPG como si de un usuario-contraseña se tratara.