나는 git pull
내 컴퓨터에서 매일 (sudo 없이)을 사용하고 있으며 ssh 폴더에 하나의 키가 있습니다 ( cat ~/.ssh/id_rsa.pub
)
sudo git pull
문제는 오류가 발생하여 전화를 걸 수 없다는 것입니다 .
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.
아마도 내 키에 문제가 있는 것 같습니다.
외부 스크립트(sudo 사용)에서 호출해야 합니다.
어떻게 전화하나요 sudo git pull
? sudo에 키를 어떻게 추가하나요?
즉, 왜 pull
작동하지 않습니까 sudo
?
답변1
특정 사용자를 지정하지 않고 무언가를 실행하면 사용자 sudo
로 실행됩니다 root
.
SSH를 통해 저장소를 복제한 것으로 보이는 것처럼 (실제로는 SSH인 것 같습니다 ) 사용자의 SSH 개인 키 대신 사용자 git
의 SSH 개인 키를 찾고 있습니다 .root
/root/.ssh/
/home/your-user/.ssh/
다음을 시도해 볼 수 있습니다.
다음을 사용하여 스크립트를 실행합니다
sudo -E
.-E
sudo에서 실행할 때 정의할 사용자 환경 변수를 유지합니다(일부 SSH 변수는 필요할 것이라고 생각SSH_AUTH_SOCK
하지만SSH_AGENT_LAUNCHER
세부 사항에 대해서는 잘 모릅니다).스크립트 내에서 "루트로" 대신 "사용자로" git 명령을 실행하세요. 이를 달성하려면
sudo
다시 의지할 수 있습니다 . :)sudo -E -u $(logname) git pull
두 번 사용하고 있다는 점에 유의하세요 sudo -E
. 하나는 스크립트를 호출하기 위한 것이고, 다른 하나는 git
스크립트 내부에서 호출하기 위한 것입니다.
작동할 겁니다 :)
PS 어떤 환경 변수를 sudo로 내보낼지에 대한 보다 세부적인 제어가 필요한 --preserve-env=list
경우 -E
.
답변2
/root/.ssh/
sudo와 함께 git을 사용하면 가 아닌 에서 키를 찾습니다 /home/yourusername/.ssh/
. 전자에 복사하기만 하면 작동합니다.