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인 것 같습니다) 사용자 중 한 명이 아닌 사용자 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
option 대신 사용하세요 -E
.
답변2
/root/.ssh/
sudo와 함께 git을 사용하면 가 아닌 에서 키를 찾습니다 /home/yourusername/.ssh/
.