【问题标题】:ssh-add permanently using ansible使用 ansible 永久添加 ssh
【发布时间】:2015-11-20 10:50:15
【问题描述】:

我正在尝试在 ansible 任务中使用 ssh-add 将 SSH 密钥添加到 SSH 代理。

我的 ansible 任务如下所示:

- name: add id_rsa in ssh-agent
  shell: eval `ssh-agent -s` && ssh-add -K ~/.ssh/id_rsa_mykey

它会返回以下结果:

TASK: [add id_rsa in ssh-agent] *********************************************** 
changed: [testcom.mydomain.com] => {"changed": true, "cmd": "eval `ssh-agent -s` && ssh-add -K ~/.ssh/id_rsa_mykey", "delta": "0:00:00.086725", "end": "2015-08-26 13:35:38.527742", "rc": 0, "start": "2015-08-26 13:35:38.441017", "stderr": "Could not create keychain item\nIdentity added: /var/root/.ssh/id_rsa_mykey (/var/root/.ssh/id_rsa_mykey)", "stdout": "Agent pid 8559", "warnings": []}

我不知道为什么它无法将钥匙添加到钥匙串中,但似乎钥匙已添加。但是,当我使用 ssh-add -l 检查时,它说代理没有身份。我找不到问题出在哪里。

可以使用相同的命令在终端中手动添加密钥。

【问题讨论】:

  • 你打算为root用户添加这个密钥吗?
  • @udondan 是的,我打算为 root 添加它。这会导致问题吗?
  • 我只是想知道,因为问题中没有提到它,但生成的输出显示任务是以 root 身份运行的。只是认为这可能是偶然的,而您正在查看错误的用户。
  • @udondan 哦,我明白了,对不起,我应该在问题中提到它。是的,我正在以 root 用户身份运行 playbook,如果已添加密钥,我会检查 root 用户的代理。根据 Alister Bulman 的回答,貌似 ssh-add 并没有直接在 ansible 任务中生效。
  • 即使这样可行,您也不知道在此任务运行后设置了环境变量 ssh-agent。不过,您可以自己编写一个包装脚本,它将 ssh-agent 的输出重定向到一个文件,然后您可以 source 稍后将其放入您的 shell。

标签: ansible ssh-keys


【解决方案1】:

ssh-agent 效果仅限于调用它的单个任务,因为到ssh-agent 的连接信息保存在环境变量中。你可能想看看你在任务中评估了什么。

$ ssh-agent -s
SSH_AUTH_SOCK=/tmp/ssh-uKzY20owbmmf/agent.8285; export SSH_AUTH_SOCK;
SSH_AGENT_PID=8286; export SSH_AGENT_PID;
echo Agent pid 8286;

如果没有上述设置,您将无法在以后的任务或交互式会话中使用此 ssh-agent

在任何情况下,我都不建议以这种方式运行ssh-agent (eval $(ssh-agent))。退出时很难正确完成守护进程ssh-agent,很容易使系统中的ssh-agent 进程变得无主。使用 SSH 代理转发会更好。

【讨论】:

    【解决方案2】:

    您需要从 bash/zsh/etc 启动脚本中将密钥添加到代理。您可以通过 Ansible 将这些行添加到文件中,但否则不会有什么好处。

    【讨论】:

      【解决方案3】:

      我发现仍然可以在 Ansible 任务中运行 ssh-add,以便以后的任务可以使用我添加的键。但是需要从 playbook 中删除 eval `ssa-agent` 并在 playbook 开始之前单独运行它。这是为了让 Ansible 任务可以看到代理的环境变量。

      【讨论】:

        猜你喜欢
        • 2018-03-21
        • 2021-11-29
        • 2011-11-05
        • 2018-01-04
        • 1970-01-01
        • 2014-11-29
        • 1970-01-01
        • 1970-01-01
        • 2018-03-31
        相关资源
        最近更新 更多