在Docker镜像上设置ssh公钥

我设置了一个支持ssh的Docker镜像。 没问题,很多例子。 但是,大多数示例显示使用passwd设置密码。 我想分发我的形象。 有一个固定的密码,尤其是根,似乎是一个巨大的安全漏洞。 更好的是,对我来说,是设置没有密码的根的形象。 当用户获得图像时,他们会将其公共ssh文件复制到映像/root/.ssh/authorized_keys文件。

有没有推荐的方法来做到这一点?

  1. 使用用户可以编辑的ADD命令提供一个Dockerfile,它build立在我的图像上?
  2. 提供一个运行类似“cat〜/ .ssh / authorized_keys | docker run -i sh -c'cat> root / .ssh / authorized_keys”的shell脚本?

怎么样生成一个私钥并显示给用户?

我使用这个片段作为图像的入口脚本的一部分:

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