【问题标题】:Adding private ssh key to docker将私有 ssh 密钥添加到 docker
【发布时间】:2018-11-02 17:48:30
【问题描述】:

我正在尝试将我的 ssh 私钥添加到 docker,我的 Dockerfile 如下:

ARG key
RUN echo $key > panaxea-key

RUN chmod 600 panaxea-key
RUN eval $(ssh-agent -s) && ssh-add panaxea-key

控制台输出:

Step 10/14 : RUN echo $key > panaxea-key
 ---> Using cache
 ---> 8ee023dba45e
Step 11/14 : RUN chmod 600 panaxea-key
 ---> Using cache
 ---> b7c42a9c5268
Step 12/14 : RUN eval $(ssh-agent -s) && ssh-add panaxea-key
 ---> Running in 9895e087cea5
Agent pid 9
Enter passphrase for panaxea-key: The command '/bin/sh -c eval $(ssh-agent -s) && ssh-add panaxea-key' returned a non-zero code: 1
dario@dario-X750JB:~/Panaxea_Docker$ 

有什么建议吗?我的密钥没有密码

【问题讨论】:

  • 这可能与在非交互模式下进行的 ssh-add 操作有关。当然,您提供的原始文本没有密钥,但是当它被创建时,它可能期望有一个。我知道当你执行 ssh-keygen -t rsa 时,它通常会提示你输入密码。为什么不尝试在 docker 之外创建密钥并使用 COPY 操作将其放入映像中呢?会是一个更好的测试。
  • “不要这样做!”一旦构建完成,从镜像中取出密钥是非常容易的,此时您基本上必须考虑它已被破坏并撤销对它有权访问的任何内容的访问权限。
  • @DavidMaze 你能推荐一个替代方案吗?
  • 你认为你为什么想要它?答案通常会变成“将 Dockerfile 检入 git 存储库,不要尝试在 Dockerfile 中克隆存储库”之类的更高级的事情。
  • @DavidMaze 因为我必须将私有 git 存储库克隆到我的 docker 环境中? ://

标签: docker ubuntu


【解决方案1】:

如果您的密钥没有密码并且 ssh-add 要求您提供密码,这意味着 ssh-add 无法理解您的密钥文件。罪魁祸首是echo $key > panaxea-key。您会看到该文件现在是一行文本,并且所有换行符都消失了。

请改用echo "$key" > panaxea-key

这应该可以让它工作,但是关于在 docker 镜像中嵌入私钥的警告仍然存在。你如何解决这个问题取决于你想要完成什么,但我觉得这完全是一个不同的问题。

【讨论】:

    猜你喜欢
    • 2018-06-25
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2018-11-07
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多