【问题标题】:Sudo git as another user with ssh-agent for key accesssudo git 作为另一个具有 ssh-agent 的用户进行密钥访问
【发布时间】:2012-02-06 01:58:07
【问题描述】:

我为用户 www-data 设置了 ssh-agent,并为私钥保存了密码

我需要从 root 运行“sudo -u www-data git pull”,这样它就不会询问 git 私钥密码。 sudo 不运行 .bashrc 脚本,所以不知道如何解决这个问题?

有什么建议吗?

【问题讨论】:

  • 手动获取 rc 文件怎么样?另外,unix.SE 可能会让你更幸运。
  • 为我缺乏知识而道歉,但是手动 rc 文件是什么意思?我不确定位掩码有什么帮助?谢谢
  • Eehhh ...首先,bitmask 是我的用户名,不是建议。另一件事是,您似乎已经发现问题是由sudo 导致的,而不是“运行 .bashrc 脚本”,所以我认为您可以通过自己采购(即运行)来解决这个问题。
  • 非常感谢!我是这方面的新手。我所要做的就是创建一个 .bash_profile 文件,该文件以 .bashrc 为源,我的 ssh 代理脚本正在加载并且可以正常工作。
  • 太好了,这就是我通过 commenting 而不是 answering 得到的 :) 无论如何,这基本上是 Jefromi 的回答所暗示的。

标签: git ubuntu sudo


【解决方案1】:

我这样做,并将 ssh-add 作为我的 .bash_profile 的一部分:

sudo -u otherusername ssh-agent bash -l

不幸的是,我在执行此操作时使用向上箭头似乎没有任何历史记录。但是,当我运行相同的命令减去 sudo 部分时,我会这样做。

顺便说一句,这是我在 bash 配置文件中自动启动 ssh-agent(仅一次)并添加 RSA 密钥(仅一次)的内容:

# Start ssh-agent & add key
if [[ -z $SSH_AGENT_PID ]]; 
then 
    echo Starting ssh-agent automatically...
    ssh-agent bash -l
elif [[ 0 == `ssh-add -l | grep "(RSA)" -c` ]];
then
    echo Adding ssh key automatically...
    # you might have your key in a different location:
    ssh-add ~/.ssh/idents/id_rsa
fi

【讨论】:

    【解决方案2】:

    也许您想要-i 选项?来自man sudo:

    -i [command]

    -i(模拟初始登录)选项将目标用户的 passwd(5) 条目中指定的 shell 作为登录 shell 运行。这意味着 shell 将读取特定于登录名的资源文件,例如 .profile 或 .login。如果指定了命令,则将其传递给 shell 以执行。否则,将执行交互式 shell。

    【讨论】:

    • 不幸的是,这也不起作用。它仍然要求输入密钥的密码
    • 它是使用 -i 开关和从 .bash_profile 获取 .bashrc 的组合(因为 -i 运行 .bash_profile 或 .profile 但不运行 .bashrc)。感谢您帮助我找到正确的答案!
    • @jadent:通常默认的 .profile 或 .bash_profile 来自 bashrc;我不知道你的没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2022-06-10
    • 2019-04-13
    • 2016-06-30
    • 2021-05-13
    • 2017-07-02
    相关资源
    最近更新 更多