【问题标题】:Adding ssh keys to ssh-agent fails w/ running agent, environment variables set将 ssh 密钥添加到 ssh-agent 失败 w/运行代理,环境变量集
【发布时间】:2015-08-03 19:45:06
【问题描述】:

[SSH]“无法打开与您的身份验证代理的连接”。错误

我正在尝试将 ssh 密钥添加到我的 ssh 代理中。我首先确保 ssh-agent 正在运行。

exec ssh-agent bash

我确保 ssh-agent 正在运行。

ps axu | grep [s]sh

并得到以下内容

root 1562 ... ssh-agent bash

环境变量设置正确。

SSH_AGENT_PID=1562

SSH_AUTH_SOCK=/tmp/ssh-699iHAxuK4xX/agent.1561

但是当我尝试使用添加私钥时

sudo ssh-add ~/.ssh/peter-key

我收到 ssh 错误

无法打开与您的身份验证代理的连接。

我已经尝试了stackoverflowserverfault 的建议,但没有。

注意:我在一台带有 ubuntu 的免费层 AWS 机器上运行 linux 机器。我的实例的安全组(暂时)允许来自任何 IP 地址的所有传入和传出 ssh 连接。有人知道错误可能是什么吗?

【问题讨论】:

    标签: linux bash ubuntu amazon-web-services ssh


    【解决方案1】:

    随便用

    ssh-add ~/.ssh/peter-key
    

    ...不是...

    sudo ssh-add ~/.ssh/peter-key
    

    使用sudo(可选/可配置,但通常)清除许多环境变量,包括您刚刚验证设置的环境变量。 (比较sudo env 和普通env 的输出来看看这个效果)。

    如果您必须使用sudo 来读取密钥,那么您可以自己明确地在另一端设置必要的环境变量:

    sudo env "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" ssh-add ~/.ssh/peter-key
    

    但是,使用 UNIX 域套接字的安全敏感程序可能会检查该套接字另一端的软件的所有权和权限,并拒绝与运行在不同于他们预期的用户帐户上的任何东西进行通信,因此这种方法可能无法抵御未来添加到 ssh-agent 的安全功能。

    【讨论】:

    • 根据快速查看手册页,这里似乎不需要env(也使用env更改哪个命令根据sudo策略进行检查,不是吗?就在重要的情况。)。
    • @EtanReisner,是的,但要允许使用 sudo var=value commandname ... 覆盖环境,需要在 sudoers 文件中进行适当的配置。此外,坦率地说,sudo 可以配置很多不同的方式,我更喜欢在此过程中尽早将其从图片中删除; env 的行为变化不大。
    • 足够公平(除非环境专门允许ssh-add 或其他任何东西,但至少不允许env)。 ssh-add 需要 sudo 似乎很奇怪。
    猜你喜欢
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2019-01-17
    • 2023-03-15
    • 2018-02-25
    • 2018-12-28
    • 2021-03-20
    • 2021-03-27
    相关资源
    最近更新 更多