He leído la definición oficial:
ssh-agent es un programa para contener claves privadas utilizadas para la autenticación de clave pública (RSA, DSA, ECDSA). La idea es que ssh-agent se inicie al comienzo de una sesión X o una sesión de inicio de sesión, y todas las demás ventanas o programas se inician como clientes del programa ssh-agent. Mediante el uso de variables de entorno, el agente se puede ubicar y usar automáticamente para la autenticación al iniciar sesión en otras máquinas usando ssh (1).
"... un programa para contener claves privadas ..." - En mi humilde opinión - las claves ssh son generadas por el usuario con el comando ssh-keygen y se almacenan de forma simple y directa en ~ / .ssh - ¿por qué necesito algún demonio para mantener estas claves? De todos modos, ¿cómo los mantiene exactamente? ¿No se almacenan simplemente en .ssh?
"se inician como clientes del programa ssh-agent" - No lo entiendo. ¿Dónde se necesitaría eso? Usualmente solo uso ssh como esto:
ssh -i ~/.ssh/private_key_name username@hostname
¿Qué significa exactamente el manual por "clientes"? No ejecute simplemente el comando ssh desde la terminal para conectarse: ¿qué otros clientes están allí y por qué no pueden simplemente usar una ruta a ese archivo privado ssh, al igual que el comando ssh?
~/.ssh/config
laIdentityFile
opción, con o sin el agente~/.ssh/config
qué clave usar para qué host remoto, de modo que sepa exactamente cuál necesita.ssh-agent
no es necesario si una clave privada no está protegida por una frase de contraseña?El beneficio
ssh-agent
es que solo necesita ingresar su frase de contraseña una vez. Si su clave RSA privada no está encriptada con una frase de contraseña, entonces ssh-agent no es necesario. Elssh
comando sería un ejemplo de un cliente.fuente
Si está habitualmente
ssh
ING en una variedad de máquinas diferentes, cada uno con su propia clave y contraseña, y haga correrssh-agent
le permite introducir la contraseña para cada tecla una vez 1 al inicio de la sesión y entonces se puede autenticar a cada máquina tantas veces como desee sin tener que volver a ingresar su frase de contraseña.Otro beneficio es que, según la
man
página, el agente nunca envía una clave privada a través de su canal de solicitud; así que si saltas entre diferentes cajas, tus claves privadas están protegidas.1 Puede configurar el
life
tiempo que las claves se mantienen en el agente.fuente
El artículo de Wikipedia probablemente tiene la mejor descripción:
De nuevo textualmente del artículo de Wikipedia:
Por lo general, se coloca en un sistema o en los archivos rc del usuario como
$HOME/.bashrc
o$HOME/.profile
(para bash shells) para que elssh-agent
conjunto de variables de entorno se incorpore completamente a su entorno.En mi sistema Fedora 14, se inicia bastante temprano como parte del subsistema X11. En este archivo
/etc/X11/xinit/xinitrc-common
,:La variable
$SSH_AGENT
se utiliza en otros scripts de inicio de X11 como aquí/etc/X11/xinit/Xclients
:Al incorporarlo aquí, las siguientes variables de entorno se configuran como parte de un shell principal, por lo tanto, todos los hijos bifurcados también deberían tenerlas, por ejemplo:
Hay un poco más de complejidad en esto, pero en pocas palabras esto es básicamente lo que está sucediendo
ssh-agent
.Por ejemplo, en GNOME, en
ssh-agent
realidad se inicia por usuario como una aplicación de inicio:TL; DR
En pocas palabras,
ssh-agent
existe para que cuando se requieran sus claves ssh solo tenga que desbloquearlas una vez con su frase de contraseña (suponiendo que tengan una), y desde entonces estén disponibles en su forma descifrada en la memoria (RAM).fuente
"se inician como clientes del programa ssh-agent" se refiere a la idea de que ssh-agent se inicia durante la inicialización de la sesión de inicio de sesión (local) para que todos los programas obtengan las variables de entorno
$SSH_AGENT_PID
y$SSH_AUTH_SOCK
que son necesarias para conectar el agente.Otra ventaja de sacar el manejo de claves privadas de ssh es que ssh-agent puede ser reemplazado por gpg-agent. Por lo tanto, puede usar claves OpenPGP (con capacidad de autenticación) para SSH. Esa es una buena solución para las claves OpenPGP en una tarjeta inteligente.
fuente