[英]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.