在docker run期间创建新的SSH密钥

时间:2016-04-27 14:14:10

标签: ssh docker

每次运行容器时,有没有办法生成新的SSH服务器密钥?我最初认为我可以将它添加到Dockerfile但我认为这只是指图像构建过程。每次运行容器时我都需要一个新密钥。

这就是我创建图像所做的。

https://docs.docker.com/engine/examples/running_ssh_service/

2 个答案:

答案 0 :(得分:2)

这是一个自定义入口点脚本的小示例设置,用于在开始时动态编辑容器。

Dockerfile:

FROM SOMETHING

RUN mkdir /start
ADD entrypoint.sh /start/entrypoint.sh

# set the entry point to custom script
ENTRYPOINT ["/start/entrypoint.sh"]

# define pseudo command, which is recognized by entry point script
CMD ["sshd"]

这会将入口点复制并设置为“entrypoint.sh”,将CMD设置为“sshd”。

这里是entrypoint.sh:

#!/bin/bash

# Fail fast, including pipelines
set -eo pipefail

... do your stuff like SSH key creation

if [ "$1" = 'sshd' ]; then
    exec /usr/sbin/sshd -D
fi

# if CMD is not sshd execute the CMD. 
# Good for debugging because you can pass /bin/bash for example as CMD
exec "$@"

现在,您可以在入口点脚本的开始时间对您的ssh密钥进行gerate,并在提供正确的CMD时运行您的应用程序。

为了调试容器,您现在可以将“/ bin / bash”作为CMD提供给docker run命令。这将为您提供bash shell而不是启动您的应用程序,但您的自定义仍然完成。

启动SSHD:

docker run myImageName

调试入口点脚本是否正确运行:

docker run -i -t myImageName /bin/bash

答案 1 :(得分:1)

试试这个

CMD /bin/rm -v /etc/ssh/ssh_host_* && dpkg-reconfigure openssh-server && /usr/sbin/sshd -D