在Docker镜像上设置ssh公钥

4
我设置了一个支持ssh的Docker镜像。没有问题,有很多例子。然而,大多数示例都显示使用passwd设置密码。我想分发我的镜像。有一个固定的密码,尤其是对于root,似乎像一个巨大的安全漏洞。对我来说,更好的方法是设置镜像时root没有密码。当用户获取镜像后,他们会将自己的公共ssh文件复制到镜像/root/.ssh/authorized_keys文件中。
如何推荐这样做?
1.提供一个Dockerfile,该文件建立在我的镜像上,并包含一个ADD命令,用户可以编辑?
2.提供一个shell脚本,运行类似于“cat ~/.ssh/authorized_keys | docker run-i sh-c'cat > root/.ssh/authorized_keys'”的命令?

另一个选项是使用“docker run -t -i -v /root/.ssh:/root/.ssh:ro yourimage”,但这仅适用于根用户的.ssh目录,因为主机/容器上的用户ID必须匹配 :( - Jiri
1个回答

8

如何生成私钥并向用户显示?

我在镜像的入口脚本中使用以下代码片段:

KEYGEN=/usr/bin/ssh-keygen
KEYFILE=/root/.ssh/id_rsa

if [ ! -f $KEYFILE ]; then
  $KEYGEN -q -t rsa -N "" -f $KEYFILE
  cat $KEYFILE.pub >> /root/.ssh/authorized_keys
fi

echo "== Use this private key to log in =="
cat $KEYFILE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接