[英]How to run a sudo command, remotely, trough SSH, using an IdentityFile?
在将一些更改推送到远程计算机上的git repo之后,我试图触发可执行文件“ post-receive ”。 该文件中包含一些需要提升特权的命令,例如:
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 dev@ip
但是,当将更改推送到我的远程仓库时,这已经是预期的:
git push live master
...在运行远程“ 接收后 ”文件时要求我输入密码。
正在运行 :
遵循数字海洋部署教程
这与GIT或SSH无关。 默认情况下,Linux发行版要求任何运行sudo
命令的用户(即使具有权限)也必须输入密码。 这可以被覆盖(见下文)。
覆盖此步骤:)
例如,检查此答案 。
您需要在sudoers
文件中为相关用户添加NOPASSWD
指令。 从该答案修改为:
dev ALL = NOPASSWD: ALL
为了安全起见,您可以使用特定命令替换ALL
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.