使用dockerfile生成ssh密钥
我为我的一些项目使用了Docker,其中一个要求是使用Docker文件生成ssh密钥,以便在容器生成时生成一对rsa密钥。我已经看到了一些通过.sh文件生成密钥生成的示例和Dockerfile有commond来运行.sh文件。 有没有办法,我们可以直接在Dockerfile而不是.sh
目前我在Dockerfile中使用以下命令来生成ssh密钥对。 但是这给了我错误说:“/ bin / sh ssh-keygen not found”
RUN ssh-keygen -q -t rsa -N '' -f /home/docker/.ssh/id_rsa
如果有人可以提供一种方法来实现这一点,那么这将非常有帮助。
谢谢,亚希
问题是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
但请阅读:我的强烈build议是不要把钥匙,证书放入容器的文件系统! 这可能会导致强大的安全风险,因为任何获得容器映像的人都可以在密钥有效的服务中validation自己; 它迫使你处理容器的图像,同样的照顾,你会对待encryption密钥和证书!
因此,build议将钥匙放在容器外面。 这可以通过使用Docker卷来轻松实现; 并且只需在启动时将容纳按键/容器的容器装入Docker容器。
在容器外部创build关键字下面的Dockerfile会在容器启动后创build关键字,并且可以用来在容器的文件系统之外创build关键字
FROM ubuntu:latest RUN apt-get -y install openssh-client CMD ssh-keygen -q -t rsa -N '' -f /keys/id_rsa
首先,使用以下命令构build容器:
docker build -t keygen-container .
使用开始容器
docker run -v /tmp/:/keys keygen-container
将在/ tmp主机上创build一个密钥。
答案在上面几乎是正确的,但是你需要先apt-get更新。 也许这是以前的Ubuntu的形象是正确的,但没有为我工作。 另外,我先删除本地主机目录中可能存在的任何id_rsa文件。
printf "FROM ubuntu:latest \nRUN apt-get update; apt-get -y install openssh-client \nCMD rm /keys/id_rsa*; ssh-keygen -q -t rsa -N '' -f /keys/id_rsa" > Dockerfile docker build -t keygen-container . docker run -v /tmp/:/keys keygen-container
- 无法使用DOCKER访问CKAN门户
- Docker容器最佳实践
- Kubernetes以部署+ rbd模式创build服务,同样configuration成在默认名称空间下成功,在非默认名称空间下失败?
- 弹性beanstalk应用程序找不到私有的docker映像
- 使用Ubuntu容器在docker(Python,Java,Ruby,…)中运行应用程序时的编码问题(ascii,utf-8)
- 如何通过echo命令发送消息到mac控制台? (适用于Mac的Docker)
- Ansible Container无法加载libsudo_util.so.0以执行特权模块
- 收集UDP(Gelf)消息并用TCP转发到logstash
- 创builddocker机