Le scénario:
J'exécute ssh-agent sur mon PC local et tous mes serveurs / clients sont configurés pour transférer l'authentification de l'agent SSH. Je peux sauter entre toutes mes machines en utilisant l'agent ssh sur mon PC local. Ça marche.
Je dois pouvoir SSH sur une machine en tant que moi-même (utilisateur1) , changer pour un autre utilisateur nommé utilisateur2 ( sudo -i -u utilisateur2 ), puis ssh dans une autre boîte en utilisant l'agent ssh que j'exécute sur mon PC local. Disons que je veux faire quelque chose comme ssh user3 @ machine2 (en supposant que user3 a ma clé SSH publique dans leur fichier authorized_keys).
J'ai sudo configuré pour conserver la variable d'environnement SSH_AUTH_SOCK .
Tous les utilisateurs impliqués (utilisateur [1-3]) sont des utilisateurs non privilégiés (pas root).
Le problème:
Lorsque je passe à un autre utilisateur, même si la variable SSH_AUTH_SOCK est définie correctement, (disons son ensemble sur: /tmp/ssh-HbKVFL7799/agent.13799) user2 n'a pas accès au socket créé par user1 - Lequel de est logique, sinon l'utilisateur2 pourrait détourner la clé privée de l'utilisateur1 et sauter en tant qu'utilisateur.
Ce scénario fonctionne très bien si au lieu d'obtenir un shell via sudo pour user2, j'obtiens un shell via sudo pour root. Car naturellement root a accès à tous les fichiers de la machine.
La question:
En utilisant de préférence sudo, comment puis-je passer de l'utilisateur1 à l'utilisateur2, mais avoir toujours accès à SSH_AUTH_SOCK de l'utilisateur1?