sudo: Jack of all trades, master of some

Utilizar Keychain como agente SSH

Comentarios desactivados en Utilizar Keychain como agente SSH

Si administras varios servidores remotamente a través de SSH y haces uso de la autenticación a través de llaves es muy recomendable usar un agente SSH.
Un agente SSH es un programa que almacena las llaves privadas y se las proporciona a los clientes sin la necesidad de interacción con el usuario, se envía la contraseña una sola vez y esta se usa en toda las sesiones SSH futuras. Existen muchas implementaciones de agentes SSH, sin embargo en esta entrada solamente hablaremos de Keychain.

Keychain es una implementación de ssh-agent y ssh-add en scripts de shell, una de sus características más notables es que mantiene un solo proceso de ssh-agent en múltiples sesiones con interacción mínima del usuario. Esto significa que solamente se necesita introducir la contraseña solamente cada vez que inicie el sistema.
La elección de Keychain principalmente vino de que no uso un administrador de inicio de sesión y me es más cómodo especificar la contraseña de la llave antes de iniciar cualquier sesión SSH.

En el archivo ~/.bash_profile es necesario agregar la siguiente línea para que Keychain se ejecute cada vez que iniciemos una sesión de bash.

eval $(keychain --eval --agents ssh -Q --quiet ~/.ssh/id_rsa)

De esta manera cada vez que ingresemos un usuario y contraseña válidos para una sesión de bash, inmediatamente Keychain nos pide la contraseña de la llave SSH y la usará durante toda la sesión. De modo que cuando nos conectemos a un host remoto a través de SSH no tendremos que especificar la contraseña.

Nota: es necesario tener en cuenta qué llave se usa para la utenticación, en este caso: ~/.ssh/id_rsa, pero pudiera ser otra en dependencia del tipo de encriptación de la llave, por ejemplo: ~/.ssh/id_ecdsa y otros.