在将一些更改推送到'post-receive',远程机器上的git 后,我试图触发一个可执行文件。在此文件中有一些需要提升特权的命令,如:
sudo -S rm -f $HOME/.build
sudo -S rm -f $HOME/Packages我已经在本地回购中添加了一个远程:
git remote add live ssh://dev@ip/home/dev/app/.git因此,我可以将更改推送到远程回购,如下所示:
git push live master每当我推送时,'post-receive‘文件就会执行。
尽管如此,'post-receive‘文件中的sudo命令还是需要一个密码。
remote: [sudo] password for dev: Sorry, try again.
remote: [sudo] password for dev:
remote: sudo: 1 incorrect password attempt
remote: [sudo] password for dev: 在本地,我设置了SSH密钥:
~/.ssh/id_rsa
~/.ssh/id_rsa.pub然后,我将本地'~/.ssh/id_rsa.pub‘文件内容复制到远程'~/.ssh/authorized_keys’文件中。
我还在本地设置了一个“config”文件,指定身份的位置:
HostName ip
IdentityFile ~/.ssh/id_rsa此时,我可以将ssh输入远程计算机,没有任何密码,如下所示:
ssh dev@ip然而,当将更改推送到远程回购时,这已经是意料之中的了:
git push live master运行远程'post-receive‘文件时,...it向我询问密码。
运行
跟随数字海洋部署教程
发布于 2017-01-01 11:33:35
sudo命令的用户输入密码,即使他们有权限。这可以被重写(见下文)。例如,检查这个答案。
您需要在您的NOPASSWD文件中为相关用户添加一个sudoers指令。根据这一答复修改如下:
dev ALL = NOPASSWD: ALL您可以使用特定的安全命令替换ALL。
https://stackoverflow.com/questions/41415048
复制相似问题