root @ jupiter:/ home / jupiter / projects#git clone ssh://git@demo.jupiter.com/diffusion/TD/transcend.git克隆到 '超越' ...
sudo:抱歉,运行sudo需要密码
致命:无法从远程存储库中读取。
我已经在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
答案 0 :(得分:4)
In this answer我发现你应该小心为sudoers文件中的用户定义多个条目。你的第二个条目会覆盖git用户的第一个条目,并且第一个条目没有NOPASSWD:指令。
我也有同样的问题,并且在git用户的sudoers文件中仅使用以下值修复了问题:
git ALL=(ALL) NOPASSWD: ALL
这表明git用户正在尝试将sudo用于除git-upload-pack和git-receive-pack之外的命令。
也可能是你的PATH中有多个这样的命令,而git用户从另一个位置找到命令。
答案 1 :(得分:1)
从同一页面开始,进一步向下https://secure.phabricator.com/book/phabricator/article/diffusion_hosting/#troubleshooting-ssh
您应该在phabricator服务器上测试这些命令(我已经将其从已记录的那些更改为适合您的环境)
$ su git
$ sudo -E -n -u root -- /usr/local/bin/git-upload-pack
如果一切正常,您将收到
usage: git upload-pack [--strict] [--timeout=<n>] <dir>
您还确定要设置phd.user
吗?这将是&#39; root&#39;在你的情况下
并确保在您的visudo文件中注释掉Defaults requiretty
。
希望它适合你,因为phabricator是一个很好的工具。
答案 2 :(得分:0)
我刚刚碰到了这个,很快发现这是因为我在设置sudoers文件时没有注意。为了解决这个问题,您可以运行以下命令。
$ which git-upload-pack
$ which git-receive-pack
确保输出的路径与您在sudoers文件中列出的路径相同。不需要密码,但仅限于在这些特定位置运行二进制文件时。
答案 3 :(得分:0)
使用https://secure.phabricator.com/book/phabricator/article/diffusion_hosting/中所述的完全sudoers配置后,我能够修复该错误:
$ vi /etc/sudoers.d/root
root ALL =(root)SETENV:NOPASSWD:ALL