Docker SSH-Key寻找简单的解决方案

时间:2020-10-21 14:16:07

标签: docker ssh-keys

我正在尝试将ssh-keys复制到我的docker中,这是一个非常简单的docker,其中包括通过Package Manager提供的一些LinuxTools。问一个问题,因为我无法提出一个简单的解决方案ADD / COPY似乎不起作用,使用docker-volume或compose似乎是最重要的。请指教。

FROM fedora:latest

RUN diskspacecheck=0 >> '/etc/dnf/dnf.conf'

RUN dnf -y update

RUN dnf -y install sshuttle \
    && dnf -y install git \
    && dnf -y install curl \
    && dnf -y install vim-X11 \
    && dnf -y install the_silver_searcher

RUN dnf -y clean packages

RUN adduser -m -p '' bowler
USER bowler

ADD /home/a/.ssh/id_rsa /home/bowler/.ssh/id_rsa

2 个答案:

答案 0 :(得分:2)

您无法将文件复制到构建目录之外的Docker容器中。这是出于安全原因。您需要做的是首先将id_rsa文件复制到与Dockerfile相同的目录中,然后将ADD更改为使用刚创建的副本,而不是尝试从当前正在使用的绝对路径。

我还建议将ADD更改为COPY,因为它更易于使用,并且不会发生意外跳闸的情况。

因此在您的命令行上:

cp ${HOME}/.ssh/id_rsa [path to dockerfile directory]

然后更新dockerfile:

COPY id_rsa /home/bowler/.ssh/id_rsa

您可能还需要添加一个RUN mkdir -p /home/bowler/.ssh


更新

基于这些评论,我认为值得在此添加免责声明,如果您采用这种方式,则所创建的映像需要以与私钥SSH密钥相同的安全考虑加以处理。

最好在运行时注入这样的身份验证凭据。这可以通过将环境变量设置为用于启动容器的命令的一部分来完成。或者,如果您有一个安全的机密存储库,可以将其添加到该存储库中,然后在容器启动时由容器下载(例如使用cURL)。

将SSH密钥直接安装到映像的方法并非完全不合理,但请谨慎行事,并请注意可能会有更清洁的选择。

答案 1 :(得分:2)

我不会在构建过程中在其中添加密钥,而是在运行容器时将其挂载,因为您可能最有可能在VCS中存储Dockerfile和其他文件,然后每个人都可以看到您的私钥!

因此,在您启动容器时添加此选项可能是更好/更安全的选项option :) -v $ {HOME} /。ssh / id_rsa:/home/bowler/.ssh/id_rsa