我在Windows 7上使用boot2docker.VirtualBox正在Windows(c:\Users\Me\.ssh
)中安装我的Windows~ / .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配置的最简单方法是什么?
答案 0 :(得分:5)
稍微有点笨拙,但是你可以将.ssh文件复制到一个新目录中并在shell启动时chmod它们。
即。通过卷为容器提供SSH文件,但使用shell ~/.profile
将它们复制到〜/ .ssh。