Esta pagina se ve mejor con JavaScript habilitado

Iniciar ssh-agent en el arranque de las X

 ·  🎃 kr0m

Tener la clave ssh protegida por passphrase está muy bien, en caso de robo el atacante tendrá que superar un segundo obstáculo, pero también es muy engorroso tener que meter la passphrase cada vez que queremos conectar a algún servidor, para ello tenemos ssh-agent que nos preguntará el password una vez y lo cacheará. De este modo tendremos la key protegida y nuestro trabajo como sysadmin seguirá siendo igual de ágil.

Para iniciar ssh-agent en el arranque de las X es tan sencillo como meter un eval ssh-agent y un ssh-add antes de iniciar el gestor de ventanas, según el sistema Unix que utilicemos tendremos que hacerlo de un modo u otro.


FreeBSD:

pkg install OpenSSH-askpass
vi .xinitrc
setxkbmap es
xrdb .Xresources
xbindkeys &
shutter --min_at_startup &

killall ssh-agent
export SSH_ASKPASS=/usr/local/bin/x11-ssh-askpass ;export SSH_ASKPASS
eval `ssh-agent -s`
ssh-add &

exec ck-launch-session dbus-launch --sh-syntax --exit-with-session awesome

Linux:

emerge -av net-misc/x11-ssh-askpass
vi .xinitrc
setxkbmap es
xrdb /home/kr0m/.Xresources

eval `/usr/bin/ssh-agent`
/usr/bin/ssh-add < /dev/null

exec dbus-launch --sh-syntax --exit-with-session awesome

Shell configuration:

En la configuración de nuestra shell debemos realizar una configuración parecida a esta:

vi .bashrc

#
# ssh-agent configuration
#
if [ ! -z "$(pgrep ssh-agent)" ]; then
    export SSH_AGENT_PID=$(pgrep ssh-agent)
    export SSH_AUTH_SOCK=$(find /tmp/ssh-* -name agent.*)
fi

Arranque desde un greeter:

Si arrancamos las X desde un greeter como puede ser GDM, debemos arrancar el sshagent desde el window manager que utilicemos, en mi caso Awesome.

vi .config/awesome/rc.lua
awful.spawn.with_shell("~/.scripts/ssh-init.sh")
vi ~/.scripts/ssh-init.sh
#!/usr/bin/env bash

if [ -z "$SSH_AUTH_SOCK" ]; then
  eval $(ssh-agent -s)
fi

export DISPLAY=:0
export SSH_ASKPASS=ssh-askpass
ssh-add ~/.ssh/id_rsa < /dev/null

Método manual:

Si por alguna razón matamos el ssh-agent y no queremos rearrancar las X podemos arrancarlo manualmente:

eval ` ssh-agent -s`
ssh-add

Si te ha gustado el artículo puedes invitarme a un RedBull aquí