首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用IdentityFile远程运行sudo命令?

如何使用IdentityFile远程运行sudo命令?
EN

Stack Overflow用户
提问于 2017-01-01 11:17:20
回答 1查看 786关注 0票数 1

在将一些更改推送到'post-receive',远程机器上的git 后,我试图触发一个可执行文件。在此文件中有一些需要提升特权的命令,如:

代码语言:javascript
复制
sudo -S rm -f $HOME/.build
sudo -S rm -f $HOME/Packages

我已经在本地回购中添加了一个远程

代码语言:javascript
复制
git remote add live ssh://dev@ip/home/dev/app/.git

因此,我可以将更改推送到远程回购,如下所示:

代码语言:javascript
复制
git push live master

每当我推送时,'post-receive‘文件就会执行。

尽管如此,'post-receive‘文件中的sudo命令还是需要一个密码。

代码语言:javascript
复制
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密钥:

代码语言:javascript
复制
~/.ssh/id_rsa
~/.ssh/id_rsa.pub

然后,我将本地'~/.ssh/id_rsa.pub‘文件内容复制到远程'~/.ssh/authorized_keys’文件中。

我还在本地设置了一个“config”文件,指定身份的位置:

代码语言:javascript
复制
HostName ip
IdentityFile ~/.ssh/id_rsa

此时,我可以将ssh输入远程计算机,没有任何密码,如下所示:

代码语言:javascript
复制
ssh dev@ip

然而,当将更改推送到远程回购时,这已经是意料之中的了:

代码语言:javascript
复制
git push live master

运行远程'post-receive‘文件时,...it向我询问密码。

  • 为什么我要这个密码?
  • 我看不清楚哪一步?

运行

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

跟随数字海洋部署教程

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-01 11:33:35

  1. 这与GIT或SSH无关。默认情况下,Linux发行版要求任何运行sudo命令的用户输入密码,即使他们有权限。这可以被重写(见下文)。
  2. )重写此操作的步骤:)

例如,检查这个答案

您需要在您的NOPASSWD文件中为相关用户添加一个sudoers指令。根据这一答复修改如下:

代码语言:javascript
复制
dev ALL = NOPASSWD: ALL

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41415048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档