我在Windows 7上使用boot2docker。VirtualBox正在boot2docker VM(c:\Users\Me\.ssh
)内从Windows(/c/Users/Me/.ssh
)挂载Windows〜/.ssh目录。
我的Dockerfile正在配置要用作开发环境的镜像。它将用于自动部署的一组SSH key 和一个配置复制到容器中。这很好。容器启动时,它将自动在镜像内克隆git存储库,而不会提示。
我现在正尝试使用相同的镜像,但允许用户通过docker run -v ...
挂载自己的.ssh目录,以便他们可以选择使用自己的SSH key 。当我通过在运行容器的命令中添加-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 key 和SSH配置的最简单方法是什么?
最佳答案
稍微有点笨拙,但是您可以在启动Shell时将.ssh文件复制到新目录中并对其进行chmod设置。
IE。通过一个卷向容器提供SSH文件,但是使用shell ~/.profile
将它们复制到〜/.ssh。
关于docker - 如何将用户现有的.ssh目录挂载到Docker容器中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27069193/