如何使用IdentityFile远程通过SSH运行sudo命令?

时间:2017-01-01 11:17:20

标签: linux git shell command-line githooks

在尝试将某些更改推送到 git repo 之后,我尝试触发可执行文件' 收到后' 远程计算机。在此文件中有一些需要提升权限的命令,例如:

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

' 收到后'每当我按下时,文件就会执行。

但是,在收到后' 收件人中要求输入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 '文件。

我还设置了' 配置'文件,在本地,指定我的身份的位置:

HostName ip
IdentityFile ~/.ssh/id_rsa

此时,我能够直接进入远程计算机,没有任何密码,如下所示:

ssh dev@ip

然而,在将更改推送到我的远程仓库时,已经预料到了这一点:

git push live master

...在运行遥控器' 收件后发送'时,它会要求我输入密码。文件。

  • 我为什么要求输入此密码?
  • 我没看清楚什么步骤?

运行

  • OS X El Capitan local
  • Ubuntu 16.04.1远程LTS

关注Digital Ocean Deployment Tutorial

1 个答案:

答案 0 :(得分:4)

  1. 这与GIT或SSH无关。默认情况下,Linux发行版要求任何运行sudo命令的用户即使有权限也要输入密码。这可以被覆盖(见下文)。

  2. 重写此步骤的步骤:)

  3. 例如,检查this answer

    您需要在NOPASSWD文件中为相关用户添加sudoers指令。从那个答案修改:

    dev ALL = NOPASSWD: ALL
    

    您可以使用特定的安全命令替换ALL