Redireccionado al Agente SSH

El mismo agente SSH puede servir los retos producidos por conexiones SSH indirectas, es decir conexiones SSH arrancadas desde una conexión SSH. La idea general es que el reto producido por el servidor SSH será redirigido via los servidores intermedios hasta el agente en la máquina local. El reto será resuelto por este último y la solución emprenderá el camino de vuelta hasta el último servidor en la lista de saltos.

Para habilitar Agent forwarding usamos la opción -A.

  desktop$ ssh -A user@remotehost

Si se quiere habilitar agent-forwarding desde el fichero de configuración pondremos ForwardAgent yes en la correspondiente entrada para ese host en ~/.ssh/config:

  $ cat ~/.ssh/config
  Host shellserver
    ForwardAgent yes
  
  Host management-server
    ForwardAgent yes
  
  Host *
    ForwardAgent no

Obsérvese la presencia de la sección restrictiva Host * en el fichero de configuración.

Veamos un ejemplo:

  1. El cliente ssh conecta con el servidor SSH remoto, se produce la autentificación via el agente que previamente ha sido cargado con la identidad. Se le solicita al servidor agent-forwarding.

    lusasoft@LusaSoft:~$ ssh -A orion
    Linux orion 2.6.8-2-686 #1 Tue Aug 16 13:22:48 UTC 2005 i686 GNU/Linux
    
    El servidor crea un socket en /tmp/ssh-XXXXXXX/agent.##### y inicializa la variable SSH_AUTH_SOCK. El daemon SSH abre nuestra shell y comenzamos a trabajar en el servidor.

    Last login: Fri May  1 10:21:38 2009 from 85.155.13.48.dyn.user.ono.com
    casiano@orion:~$ env | grep -i SSH
    SSH_CLIENT=85.155.13.48 35107 22
    SSH_TTY=/dev/pts/3
    SSH_AUTH_SOCK=/tmp/ssh-ngwpX26103/agent.26103
    SSH_CONNECTION=85.155.13.48 35107 193.145.105.17 22
    casiano@orion:~$ ls -lR /tmp/ssh-ngwpX26103/agent.26103
    srwxr-xr-x 1 casiano casiano 0 2009-05-01 10:53 /tmp/ssh-ngwpX26103/agent.26103
    
    En la máquina en la que estamos no existen ningunas identidades operativas:
    casiano@orion:~$ ls -ltra .ssh
    total 60
    -rw-rw-r--  1 casiano casiano   505 2009-03-30 08:53 config
    -rw-r--r--  1 casiano casiano  4960 2009-04-04 11:43 known_hosts
    -rw-------  1 casiano casiano  6466 2009-04-04 11:43 authorized_keys
    drwx------  2 casiano casiano  4096 2009-05-01 10:19 .
    drwxr-x--x 50 casiano casiano 12288 2009-05-01 11:13 ..
    
  2. Ahora decidimos conectarnos en orion via ssh a otra máquina europa. El cliente ssh observa la presencia de la variable SSH_AUTH_SOCK y se conecta al socket. El cliente le indica al servidor que quiere usar la misma clave que se ha usado para esta conexión.

    casiano@orion:~$ ssh europa
    Linux europa 2.6.24-23-generic #1 SMP Wed Apr 1 21:43:24 UTC 2009 x86_64
    casiano@europa:~$
    
    Vemos que hemos entrado sin necesidad de introducir una clave por teclado. La clave pública de la identidad que reside en la máquina inicial ha sido instalada también en europa. ¿Que ha ocurrido?

    El servidor en europa prepara el reto y se lo envía al cliente. El cliente en orion recibe el reto y se lo pasa a su servidor el cual actúa - desde el punto de vista del cliente - como si fuera un agente. El servidro sshd en orion mueve el reto al cliente de la primera conexión. Este primer cliente se lo pasa al agente inicial que es quien conoce la clave privada. La solución es preparada por el agente. Ahora la solución recorre el camino de vuelta.

Véase También



Subsecciones
Casiano Rodríguez León
Licencia de Creative Commons
Programación Distribuida y Mejora del Rendimiento
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=44.
2012-06-19