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.