docker创建的镜像怎么设置基于这个镜像的容器间ssh免密
时间: 2024-03-29 16:36:29 浏览: 76
创建支持SSH服务的Docker镜像的方法
要设置基于Docker创建的镜像的容器间SSH免密,需要进行以下步骤:
1. 在Dockerfile中安装SSH服务。具体操作步骤如下:
a. 在Dockerfile中添加以下命令安装SSH服务:
RUN apt-get update && apt-get install -y openssh-server
b. 添加以下命令创建SSH服务的运行目录和密钥:
RUN mkdir /var/run/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
c. 添加以下命令配置SSH服务:
RUN sed -i '/^PermitRootLogin/s/without-password/yes/' /etc/ssh/sshd_config
RUN sed -i '/^#RSAAuthentication/s/#RSAAuthentication/RSAAuthentication/' /etc/ssh/sshd_config
RUN sed -i '/^#PubkeyAuthentication/s/#PubkeyAuthentication/PubkeyAuthentication/' /etc/ssh/sshd_config
RUN sed -i '/^#AuthorizedKeysFile/s/#AuthorizedKeysFile/AuthorizedKeysFile/' /etc/ssh/sshd_config
2. 在Dockerfile中添加SSH公钥。具体操作步骤如下:
a. 在Dockerfile中添加以下命令创建SSH公钥:
RUN mkdir /root/.ssh
RUN touch /root/.ssh/authorized_keys
RUN echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIdjJlNn01pZP3ZzLJ1OmNz6nxOsPpC+MhVEQOg3T2RM4O8rC8JjXhPdUeWf5WQgmdUOQqXqUjZmHj3jH7nK5rKvmJjwCzRzWVpXlUaW8dWpRJ2NK3QDb9dqyZkDQ8rNGvYF3rx9YhZfYc9zRw7LlUDMv3dZqPq5N9jz1I9l0+I4vVT5gMzU1P9XRTZbSj5TBWfZ7GO94zLj3K/rwWnJn0Sy7eQh7VkXN63D0XZLkq1Z7KryP2L8q5v2+q+8f7zHu7f0cGhjFJZcyh4QOa/W8wYf+zvW8zXlRzU3nZ5w0ZuJWvL+7zJG6T5g9xJYl4oJ5J6B7QI8rM2ngBn6aBp6WNlQjFq/GhWQJgHtJ user@hostname" >> /root/.ssh/authorized_keys
b. 将上述命令中的"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIdjJlNn01pZP3ZzLJ1OmNz6nxOsPpC+MhVEQOg3T2RM4O8rC8JjXhPdUeWf5WQgmdUOQqXqUjZmHj3jH7nK5rKvmJjwCzRzWVpXlUaW8dWpRJ2NK3QDb9dqyZkDQ8rNGvYF3rx9YhZfYc9zRw7LlUDMv3dZqPq5N9jz1I9l0+I4vVT5gMzU1P9XRTZbSj5TBWfZ7GO94zLj3K/rwWnJn0Sy7eQh7VkXN63D0XZLkq1Z7KryP2L8q5v2+q+8f7zHu7f0cGhjFJZcyh4QOa/W8wYf+zvW8zXlRzU3nZ5w0ZuJWvL+7zJG6T5g9xJYl4oJ5J6B7QI8rM2ngBn6aBp6WNlQjFq/GhWQJgHtJ user@hostname"替换为自己的SSH公钥。
3. 在启动容器时,将SSH端口暴露出来。具体操作步骤如下:
a. 在启动容器时,使用-p参数将容器的22端口映射到主机的一个端口上,例如:
docker run -p 2222:22 -it --name container_name image_name /bin/bash
其中,2222是主机上的端口号,container_name是容器的名称,image_name是Docker镜像的名称。
4. 在容器中使用ssh-copy-id命令,将SSH公钥复制到其他容器中。具体操作步骤如下:
a. 进入容器中执行以下命令将SSH公钥复制到其他容器中:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@other_container_ip_address
其中,other_container_ip_address是其他容器的IP地址。
5. 在其他容器中使用SSH密钥登录。具体操作步骤如下:
a. 在其他容器中执行以下命令登录容器:
ssh root@container_ip_address
其中,container_ip_address是目标容器的IP地址。
6. 如果需要实现容器间SSH免密登录,可以在其他容器中重复第2-5步的操作,将SSH公钥复制到其他容器中。完成以上步骤后,就可以实现基于Docker创建的镜像的容器间SSH免密登录了。
阅读全文