Como permitir o git pull como um sudo

Como permitir o git pull como um sudo

Estou usando git pull(sem sudo) todos os dias na minha máquina, tenho uma chave na pasta ssh ( cat ~/.ssh/id_rsa.pub)

O problema é que não consigo ligar sudo git pullporque estou recebendo um erro:

sudo git pull
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Provavelmente há problema com minha chave.

Preciso chamá-lo em meu script externo (usando sudo).

Como posso ligar sudo git pull? Como posso adicionar chave para sudo?

Resumindo: pullnão funciona com sudopor quê?

Responder1

Quando você executa algo sudosem especificar um usuário específico, você o executa como rootusuário.

Parece que você clonou seu repositório via SSH git(na verdade, SSH, eu acho) está procurando a chave privada SSH para o rootusuário em vez da do seu usuário : /root/.ssh/vs./home/your-user/.ssh/

Você pode tentar o seguinte:

  • Execute seu script usando sudo -E: -EPreserva as variáveis ​​de ambiente do usuário a serem definidas ao executar no sudo (algumas variáveis ​​SSH, acho SSH_AUTH_SOCKe/ou SSH_AGENT_LAUNCHERserão necessárias, mas não sei muito sobre os detalhes).

  • Dentro do seu script, execute o comando git "como usuário" em vez de "como root". Para conseguir isso, você pode confiar sudonovamente :)

    sudo -E -u $(logname) git pull
    

Observe que você está usando sudo -Eduas vezes: uma para chamar o script e outra para chamar gitdentro do script.

Isso deve funcionar :)

PS Caso você precise de um controle mais refinado de quais variáveis ​​de ambiente são exportadas para o sudo, use --preserve-env=lista opção em vez de -E.

Responder2

Quando você usa o git com o sudo, ele procura a chave in /root/.ssh/e não in /home/yourusername/.ssh/. Você apenas precisa copiá-lo para o primeiro e deve funcionar.

informação relacionada