Lo scenario:
Sto eseguendo ssh-agent sul mio PC locale e tutti i miei server / client sono impostati per inoltrare l'autenticazione dell'agente SSH. Posso saltare tra tutte le mie macchine usando l'agente ssh sul mio PC locale. Che funzioni.
Devo essere in grado di SSH su una macchina come me stesso (utente1) , passare a un altro utente chiamato user2 ( sudo -i -u user2 ) e quindi ssh in un'altra casella usando l'agente ssh che ho in esecuzione sul mio PC locale. Diciamo che voglio fare qualcosa di simile a ssh user3 @ machine2 (supponendo che user3 abbia la mia chiave SSH pubblica nel suo file authorized_keys).
Ho configurato sudo per mantenere la variabile d'ambiente SSH_AUTH_SOCK .
Tutti gli utenti coinvolti (utente [1-3]), sono utenti non privilegiati (non root).
Il problema:
Quando cambio a un altro utente, anche se la variabile SSH_AUTH_SOCK è impostata correttamente, (diciamo che è impostata su: /tmp/ssh-HbKVFL7799/agent.13799) user2 non ha accesso al socket creato dall'utente1 - Quale di Naturalmente ha senso, altrimenti user2 potrebbe dirottare la chiave privata di user1 e spostarsi come tale utente.
Questo scenario funziona bene se invece di ottenere una shell tramite sudo per utente2, ottengo una shell tramite sudo per root. Perché naturalmente root ha accesso a tutti i file sulla macchina.
La domanda:
Preferibilmente usando sudo, come posso cambiare da utente1 a utente2, ma avere ancora accesso a SSH_AUTH_SOCK dell'utente1?