【问题标题】:How to run a sudo command, remotely, trough SSH, using an IdentityFile?如何使用 IdentityFile 通过 SSH 远程运行 sudo 命令?
【发布时间】:2017-05-15 20:45:53
【问题描述】:

在向远程机器上的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 进入远程机器,无需任何密码,如下所示:

ssh dev@ip

但是,在将更改推送到我的远程仓库时,这是已经预料到的:

git push live master

...它在运行远程“post-receive”文件时要求我输入密码。

  • 为什么要求我输入此密码?
  • 哪一步看不清楚?

跑步

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

关注Digital Ocean Deployment Tutorial

【问题讨论】:

标签: linux git shell command-line githooks


【解决方案1】:
  1. 这与 GIT 或 SSH 无关。 Linux 发行版默认要求任何运行sudo 命令的用户输入密码,即使他们有权限。这可以被覆盖(见下文)。

  2. 覆盖这个的步骤:)

this answer 为例。

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

dev ALL = NOPASSWD: ALL

为了安全起见,您可以将ALL 替换为特定命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2011-10-26
    相关资源
    最近更新 更多