【问题标题】:Is there a `ssh-add` Linux alpine one liner是否有`ssh-add` Linux alpine one liner
【发布时间】:2017-10-27 22:15:27
【问题描述】:

我需要在 Gitlab-CI 构建期间使用 alpine 映像中的 ssh-agent 进行身份验证。

我正在寻找一个 sh 相当于这个 bash 命令(picked from the gitlab documentation)

ssh-add <(echo "$SSH_PRIVATE_KEY")

我试过了:

echo $SSH_PRIVATE_KEY | ssh-add -
Enter passphrase for (stdin): ERROR: Job failed: exit code 1

printf '%s\n' "$SSH_PRIVATE_KEY" | ssh-add
ERROR: Job failed: exit code 1

【问题讨论】:

标签: linux bash ssh sh


【解决方案1】:

你必须在你的第一个命令中引用变量:

echo "$SSH_PRIVATE_KEY" | ssh-add -
     ^----------------^

或者在第二个命令中指定 - 作为文件名:

printf '%s\n' "$SSH_PRIVATE_KEY" | ssh-add -
                                      -----^

【讨论】:

  • 也许您的意思是“和”,而不是“或”? (毕竟后者不能替代前者)。
  • 是的,正确答案应该是echo "$SSH_PRIVATE_KEY" || ssh-add -
  • 我认为| 在这种情况下(bash oneliner)是一个管道,而不是逻辑 AND 或 OR。该解决方案存在不同的问题。 ssh-add 将打开一个对话框并询问密码并等待输入。我已经看到了使用 expect 的解决方案。
  • 嗯,在那个例子中我得到了-: No such file or directory(在 docker 容器内运行)。
  • 确保您首先使用 eval $(ssh-agent) 启动 SSH 代理。其他解决方案:stackoverflow.com/questions/17846529/…
【解决方案2】:

你应该使用这个命令:

echo "$SSH_PRIVATE_KEY" | ssh-add -

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-07
    • 2017-09-26
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 2016-04-22
    • 2014-03-19
    • 1970-01-01
    相关资源
    最近更新 更多