El escenario:
Estoy ejecutando ssh-agent en mi PC local, y todos mis servidores / clientes están configurados para reenviar la autenticación del agente SSH. Puedo saltar entre todas mis máquinas usando el agente ssh en mi PC local. Eso funciona.
Necesito poder usar SSH en una máquina como yo mismo (usuario1) , cambiar a otro usuario llamado usuario2 ( sudo -i -u usuario2 ) y luego pasar a otro cuadro usando el agente ssh que tengo en mi PC local. Digamos que quiero hacer algo como ssh user3 @ machine2 (suponiendo que user3 tenga mi clave SSH pública en su archivo autorizado_keys).
He configurado sudo para mantener la variable de entorno SSH_AUTH_SOCK .
Todos los usuarios involucrados (usuario [1-3]), son usuarios no privilegiados (no root).
El problema:
Cuando cambio a otro usuario, aunque la variable SSH_AUTH_SOCK esté configurada correctamente, (digamos que está configurada en: /tmp/ssh-HbKVFL7799/agent.13799) user2 no tiene acceso al socket creado por el usuario1 - Cuál de Por supuesto, tiene sentido, de lo contrario, user2 podría secuestrar la clave privada de user1 y saltar como ese usuario.
Este escenario funciona bien si en lugar de obtener un shell a través de sudo para user2, obtengo un shell a través de sudo para root. Porque, naturalmente, la raíz tiene acceso a todos los archivos de la máquina.
La pregunta:
Preferiblemente usando sudo, ¿cómo puedo cambiar de usuario1 a usuario2, pero aún así tener acceso a SSH_AUTH_SOCK del usuario1?