gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:14 25 4
gpt4 key购买 nike

在将一些更改推送到远程机器上的git repo之后,我试图触发一个可执行文件“post-receive” >。此文件中包含一些需要提升权限的命令,例如:

sudo -S rm -f $HOME/.build
sudo -S rm -f $HOME/Packages

我已经添加了一个 Remote 到我的本地仓库:

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 key 配置我的访问权限并指定我的身份文件。

我在本地设置了我的 SSH key :

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

最佳答案

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

  2. 覆盖这个的步骤:)

检查 this answer例如。

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

dev ALL = NOPASSWD: ALL

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

关于linux - 如何使用 IdentityFile 通过 SSH 远程运行 sudo 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41415048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com