【发布时间】:2015-01-20 01:28:12
【问题描述】:
我在 Windows 7 上使用 boot2docker。VirtualBox 正在将我的 Windows ~/.ssh 目录从 Windows (c:\Users\Me\.ssh) 安装到 boot2docker VM (/c/Users/Me/.ssh) 中。
我的 Dockerfile 正在配置要用作开发环境的映像。它将一组 SSH 密钥和用于自动部署的配置复制到容器中。这工作正常。容器启动时,会自动在镜像中克隆一个git仓库,不提示。
我现在尝试使用相同的映像,但允许用户通过docker run -v ... 挂载他们自己的 .ssh 目录,以便他们可以选择使用自己的 SSH 密钥。当我通过在运行容器的命令中添加 -v /home/myself/.ssh:/home/guest/.ssh 来执行此操作时,我收到关于权限太开放的 SSH 警告:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/home/guest/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/guest/.ssh/id_rsa
我尝试在 ENTRYPOINT 脚本中添加一行到 chmod -R 700 /home/guest/.ssh,但它似乎无效或在安装卷之前执行。
我还尝试从正在运行的容器中更改/home/guest/.ssh 的权限,但无法这样做。运行chmod -R 700 /home/guest/.ssh 时没有出现错误,但权限没有改变。
我在另一个关于 Docker 卷权限的问题中看到提问者使用 ACL 的建议,但我不知道这是否是个好主意,或者它是否会起作用。
无论如何,允许用户在 Docker 容器内使用自己的 SSH 密钥和 SSH 配置的最简单方法是什么?
【问题讨论】:
-
您可以在 shell 启动时将 .ssh 文件复制到一个新目录并对其进行 chmod。
-
因此,例如,将 Dockerfile COPY id_rsa* 和配置复制到 /home/guest,并在 ~/.profile 中将 /home/guest/id_rsa* 复制到 /home/guest/.ssh / 并避免安装外部 .ssh 卷?
-
哦,不,我想我明白了。仍然通过卷向容器提供 SSH 文件,但使用 shell 将它们复制到 .ssh。好的。我会试一试。
-
@Bryan Brilliant!如果它没有让你觉得很笨拙,那对我来说很好。谢谢。
-
将信息复制到答案中,因此此 qn 不会显示为“未回答”
标签: docker ssh-keys boot2docker