Problema ao implementar o encaminhamento do ssh-agent no ssh e, em seguida, no su

2

Eu tenho um servidor web com um usuário dedicado sem privilégios que executa a instância do apache na caixa. O código php para o aplicativo que o servidor da web executa está em um repositório privado do github que ocasionalmente preciso git pull para atualizar.

Desejo usar minhas credenciais pessoais (minha chave id_rsa local), mas por motivos de segurança, configurei a caixa para que eu possa acessar a caixa apenas por meio de uma segunda conta não-root com acesso sudo e, sudo -iu usernameem seguida, o usuário do servidor da web.

Eu tentei ativar o encaminhamento de ssh-agent, e até mesmo o sudo manter a variável env SSH_AUTH_SOCK, mas o arquivo auth sock tem as permissões erradas (700 para o usuário em que eu estava).

Eu verifiquei que a chave é realmente adicionada ao agente e que é acessível pelo primeiro usuário. Eu tentei ssh-add -Ldo usuário do servidor web e recebi uma resposta dizendo que ele não pode se conectar ao agente ssh. Eu suspeito que isso é porque as permissões estão erradas.

Existe uma maneira de alterar as permissões de forma automatizada?

Ou eu estou indo sobre isso da maneira errada?

Shishire
fonte
3
Por que você não configura sua chave para a outra conta e apenas o ssh diretamente para essa conta?
Zoredache
Adicionar mais etapas não torna o sistema mais seguro. Nesse caso, você adicionou a oportunidade de configurar incorretamente o sudoersarquivo para ser excessivamente permissivo e não tornou mais difícil obter acesso à conta real (você ainda precisaria da chave privada correta). Na verdade, a única razão pela qual posso pensar em sua configuração seria garantir que a conta de função não tenha acesso ao agente ssh ...
Gabe

Respostas:

0

Eu tive o mesmo problema - em uma caixa Gentoo - onde eu posso logar como um usuário normal apenas, mas precisava usar o encaminhamento de agente para a conta root. De man su:

'-m'

'-p'

'--preserve-environment' Não altere as variáveis ​​de ambiente HOME, USER, LOGNAME ou SHELL. Execute o shell fornecido na variável de ambiente SHELL em vez do shell da entrada passwd do usuário, a menos que o usuário que esteja executando su não seja o superusuário e o shell do usuário esteja restrito. Um shell restrito é aquele que não está listado no arquivo / etc / shells, ou em uma lista compilada se esse arquivo não existir. Partes do que esta opção faz podem ser substituídas por --login e --shell.

assim

su -m -

preservou a $SSH_AUTH_SOCKvariável ambiente e me deu o resultado desejado.

Saucier
fonte