Accesso a SSH_AUTH_SOCK da un altro utente non radice

Lo scenario:

Sto eseguendo ssh-agent sul mio PC locale e tutti i miei server / client sono impostati per inoltrare l'authorization dell'agente SSH. Posso saltare tra tutte le mie macchine utilizzando l'agente ssh sul mio PC locale. Che funzioni.

Devo essere in grado di SSH a una macchina come me (utente1) , passare a un altro utente chiamato user2 ( sudo -i -u user2 ) e quindi ssh in un'altra casella utilizzando l'agente ssh che ho in esecuzione sul mio PC locale. Diciamo che voglio fare qualcosa come ssh user3 @ machine2 (supponendo che user3 abbia la mia chiave SSH pubblica nel suo file authorized_keys).

Ho sudo configurato per mantenere la variabile di ambiente SSH_AUTH_SOCK .

Tutti gli utenti coinvolti (utente [1-3]) sono utenti non privilegiati (non root).

Il problema:

Quando cambio ad un altro utente, anche se la variabile SSH_AUTH_SOCK è impostata correttamente (diciamo il suo set su: /tmp/ssh-HbKVFL7799/agent.13799) user2 non ha accesso alla presa creata da user1 – Quale di il corso ha senso, altrimenti l'utente2 potrebbe risolvere la chiave privata dell'utente1 e saltare come tale utente.

Questo scenario funziona bene se invece di get una shell via sudo per user2, ottengo una shell via sudo per root. Perché naturalmente la radice ha accesso a tutti i file della macchina.

La domanda:

Preferibilmente utilizzando sudo, come posso cambiare da user1 a user2, ma ho ancora accesso all'utente SSH_AUTH_SOCK?

One Solution collect form web for “Accesso a SSH_AUTH_SOCK da un altro utente non radice”

Ci sono due cose da fare:

  1. impostare la variabile SSH_AUTH_SOCK modo che punta al file corretto
  2. consentire all'altro utente di connettersi alla presa (utilizzando le autorizzazioni del file system)

Pertanto, ciò che si può fare è:

Come utente1, consentire a user2 di connettersi alla presa (accesso completo alla presa e alle autorizzazioni per l'accesso alla directory). Spero che il tuo /tmp permette ACLs.

 setfacl -mu:user2:rw $SSH_AUTH_SOCK setfacl -mu:user2:x $(dirname $SSH_AUTH_SOCK) 

Passare all'altro utente e esportre correttamente la variabile.

 sudo -u user2 env SSH_AUTH_SOCK=$SSH_AUTH_SOCK ssh user3@machine2 

Se si desidera aprire una shell intertriggers utilizzando sudo , si dovrebbe esportre la variabile SSH_AUTH_SOCK dopo aver ottenuto la shell.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.