O cenário:
Estou executando o ssh-agent no meu PC local e todos os meus servidores / clientes estão configurados para encaminhar a autenticação do agente SSH. Posso pular entre todas as minhas máquinas usando o agente ssh no meu PC local. Isso funciona.
Eu preciso ser capaz de fazer o SSH em uma máquina como eu (usuário1) , mudar para outro usuário chamado user2 ( sudo -i -u user2 ) e depois ssh para outra caixa usando o ssh-agent que estou executando no meu PC local. Digamos que eu queira fazer algo como ssh user3 @ machine2 (supondo que o user3 tenha minha chave SSH pública em seu arquivo allowed_keys).
Eu tenho o sudo configurado para manter a variável de ambiente SSH_AUTH_SOCK .
Todos os usuários envolvidos (usuário [1-3]), são usuários não privilegiados (não root).
O problema:
Quando mudo para outro usuário, mesmo que a variável SSH_AUTH_SOCK esteja definida corretamente, (digamos que esteja configurada para: /tmp/ssh-HbKVFL7799/agent.13799) user2 não tem acesso ao soquete criado pelo usuário1 - Qual das O curso faz sentido; caso contrário, o user2 pode seqüestrar a chave privada do user1 e saltar como esse usuário.
Esse cenário funciona bem se, em vez de obter um shell via sudo para o usuário2, eu obtiver um shell via sudo para root. Porque naturalmente o root tem acesso a todos os arquivos na máquina.
A questão:
De preferência usando o sudo, como posso mudar de usuário1 para usuário2, mas ainda assim ter acesso ao SSH_AUTH_SOCK do usuário1?