root@jupiter:/home/jupiter/projects# git clone
ssh://git@demo.jupiter.com/diffusion/TD/transcend.git Cloning into
‘transcend’…
sudo: sorry, a password is required to run sudo
fatal: Could not read from remote repository.
我在manual之后设置了SSH.
我也有导管ping返回正确的消息:
root@demo:~# echo {} | ssh git@demo.jupiter.com conduit conduit.ping
{"result":"demo.jupiter.com","error_code":null,"error_info":null}
以下是我的visudo文件供参考.
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
### User privilege specification
root ALL=(ALL:ALL) ALL
git ALL=(ALL:ALL) ALL
git ALL=(root) SETENV: NOPASSWD: /usr/local/bin/git-upload-pack, /usr/local/bin/git-receive-pack
### Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
### Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
解决方法:
In this answer我发现你应该小心为sudoers文件中的用户定义多个条目.你的第二个条目会覆盖git用户的第一个条目,并且第一个条目没有NOPASSWD:指令.
我也有同样的问题,并在git用户的sudoers文件中仅使用以下值修复了问题:
git ALL=(ALL) NOPASSWD: ALL
这表明git用户正在尝试将sudo用于除git-upload-pack和git-receive-pack之外的命令.
也可能是您的PATH中有多个这样的命令,而git用户从另一个位置查找命令.