问题是 ssh-keygen 在您的容器中尚不可用。这可以很容易地解决,例如通过在 ubuntu 基础镜像上安装 openssl-client 包。
以下 Dockerfile 正是这样做的,并将密钥放在容器的根文件夹中
FROM ubuntu:latest
RUN apt-get -y install openssh-client
RUN ssh-keygen -q -t rsa -N '' -f /id_rsa
但请阅读:
我的强烈建议是根本不要将密钥、证书放入容器的文件系统中!这可能会导致严重的安全风险,因为基本上任何获得容器镜像的人都可以在密钥有效的服务上验证自己;它迫使您像对待加密密钥和证书一样小心处理容器映像!
因此,建议将密钥保存在容器之外。这可以通过使用 Docker VOLUMES 轻松实现;并且您只需在启动 Docker 容器时将一个包含密钥/容器的卷挂载到 Docker 容器中。
在容器
外创建密钥 下面的 Dockerfile 会在容器启动后创建密钥,它可用于在容器文件系统之外创建密钥
FROM ubuntu:latest
RUN apt-get -y install openssh-client
CMD ssh-keygen -q -t rsa -N '' -f /keys/id_rsa
首先,使用以下命令构建容器:
docker build -t keygen-container .
使用启动容器
docker run -v /tmp/:/keys keygen-container
将在 /tmp 中的主机上创建一个密钥。