如何将用户现有的.ssh目录挂载到Docker容器中?

hou*_*ack 6 ssh-keys docker boot2docker

我在Windows 7上使用boot2docker.VirtualBox正在从c:\Users\Me\.sshboot2docker VM(/c/Users/Me/.ssh)内的Windows()安装我的Windows~/.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
Run Code Online (Sandbox Code Playgroud)

我尝试在ENTRYPOINT脚本中添加一行,chmod -R 700 /home/guest/.ssh但似乎无效或在安装卷之前执行.

我还尝试/home/guest/.ssh在正在运行的容器中更改权限,但无法执行此操作.运行时没有错误,chmod -R 700 /home/guest/.ssh但权限不会更改.

我在另一个关于Docker卷权限的问题中看到了提问者使用ACL的建议,但我不知道这是不是一个好主意,或者它是否会起作用.

无论如何,允许用户在Docker容器中使用自己的SSH密钥和SSH配置的最简单方法是什么?

Bry*_*yan 5

稍微有点笨拙,但你可以将.ssh文件复制到一个新目录中并在shell的启动时chmod它们.

即通过卷为容器提供SSH文件,但使用shell ~/.profile将它们复制到〜/ .ssh.