簡體   English   中英

如何使用IdentityFile通過SSH遠程運行sudo命令?

[英]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密鑰:

~/.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

...在運行遠程“ 接收后 ”文件時要求我輸入密碼。

  • 為什么要求輸入密碼?
  • 我看不清哪一步?

正在運行

  • OS X El Capitan本地
  • 遠程Ubuntu 16.04.1 LTS

遵循數字海洋部署教程

  1. 這與GIT或SSH無關。 默認情況下,Linux發行版要求任何運行sudo命令的用戶(即使具有權限)也必須輸入密碼。 這可以被覆蓋(見下文)。

  2. 覆蓋此步驟:)

例如,檢查此答案

您需要在sudoers文件中為相關用戶添加NOPASSWD指令。 從該答案修改為:

dev ALL = NOPASSWD: ALL

為了安全起見,您可以使用特定命令替換ALL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM