SSH ForwardAgent saltos múltiples

15

He estado buscando una solución al siguiente problema durante las últimas 2 horas sin suerte.

Desarrollo:

Estoy usando la autenticación de clave pública para conectarme a mis servidores. Utilizo el reenvío de ssh-agent para no tener que administrar claves públicas / privadas.

Digamos que tengo servidores A, B and C.

Esto funciona muy bien si me conecto desde LOCAL ---> A ---> B.

También funciona muy bien si lo hago LOCAL ---> A ---> C.

Ahora, si lo intento LOCAL ---> A ---> B ---> C, SSH no puede conectarse B to C.

Vale la pena señalar: me conecto al servidor A como liquidez, mientras que me conecto al servidor B como root. Conectarse al servidor B como liquidez soluciona el problema, pero esta no es una opción para mí.

Según la recomendación de un usuario, uso ssh -Acada vez para asegurarme de que el reenvío de agente esté habilitado.

Encontré una pregunta similar, sin respuesta aquí: ¿es posible encadenar el reenvío de ssh-agent a través de múltiples saltos?

De acuerdo con @Zoredache aquí: /server//a/561576/45671 Solo necesito ajustar la configuración de mi cliente en cada sistema intermedio. Lo cual creo que hice.

liquidez
fuente
Considere usar el ProxyCommandsalto (como se explica aquí ) en lugar de reenviar el agente SSH. Para su enfoque, tendrá que confiar en todas las máquinas de la cadena porque pueden (ab) usar sus claves privadas. También me gusta mucho el enfoque ProxyCommand porque la verificación de hosts conocidos se realiza localmente y, además, puede configurar la cadena en su configuración SSH para que pueda usar un solo comando para conectarse a C.
gertvdijk
Desafortunadamente no puedo usar un proxyCommand. A pesar de las consideraciones de seguridad, realmente necesito usar forwardAgent.
liquidez
@ liquidez ¿Puedo preguntarte por qué no quieres usar proxyCommand? Tengo el mismo problema y, según tengo entendido, proxyCommand es más seguro. Así que estoy pensando cuál usar ...
grep

Respuestas:

13

Para que el reenvío de agentes funcione a través de múltiples saltos, simplemente necesita ajustar la configuración de su cliente en cada sistema intermedio para que el reenvío de agentes.

Podría ser tan simple como asegurarse de que /etc/ssh/ssh_configtiene esto configurado. Pero si tiene configuraciones por cliente, ~/.ssh/configes posible que también deba ajustar esa configuración.

Host *
    ForwardAgent yes

Puede ver si se produjo el reenvío del agente o si hubo un error si solo agrega la -vopción.

$ ssh -v issc@server1
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /home/zoredache/.ssh/config
...
debug1: Requesting authentication agent forwarding.
debug1: Sending environment.
Linux server1 3.11-0.bpo.2-amd64 #1 SMP Debian 3.11.8-1~bpo70+1 (2013-11-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 15 20:39:44 2013 from 10.2.4.243
issc@server1:~$

Verifique también que tenga un conjunto de variables de entorno válido.

issc@server1:~$ export | grep SSH_AUTH
declare -x SSH_AUTH_SOCK="/tmp/ssh-7VejOmKtNv/agent.57943"
Zoredache
fuente
44
Vale la pena mencionar el indicador -A a ssh como una alternativa rápida y sucia a la opción ssh_config o ~ .ssh / config. -A [e] permite el reenvío de la conexión del agente de autenticación.
dmourati
1
En cada paso, puede usar ssh-add -lpara enumerar las claves que ssh cree que puede obtener a través de su agente. ¡Asegúrese de reenviarlo en cada conexión!
MikeyB
¡Gracias! También tenga en cuenta que si todo se hace correctamente, no tendrá que iniciar manualmente el agente ssh en el último servidor. Comenzará automáticamente si ve la líneaRequesting authentication agent forwarding. en su salida de depuración. Si intentó .bash_profileiniciar ssh-agent, elimínelo de allí o su agente comenzará nuevamente sin ninguna identidad.
2upmedia