Questão Problema ao implementar o encaminhamento de ssh-agent através do ssh e, em seguida, su


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 web executa está em um repositório github privado 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 somente por meio de uma segunda conta não-root com acesso sudo e, em seguida, sudo -iu username para 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 -L do usuário do servidor web e recebi uma resposta dizendo que não pode se conectar ao ssh-agent. 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?


2


origem


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. Neste caso, você adicionou a oportunidade de configurar incorretamente sudoers arquivo para ser excessivamente permissivo, e não tornou mais difícil para obter acesso à conta real (você ainda precisa da chave privada correta). Na verdade, a única razão pela qual posso pensar em sua configuração seria garantir que a conta da função não faz tem acesso ssh-agent ... - Gabe


Respostas:


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. A partir de man su:

"-M"

‘-P’

"- preservar o meio ambiente"   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 o $SSH_AUTH_SOCK variável de ambiente e me deu o resultado desejado.


0