在docker上使用dockerfile基于centos镜像配置ssh自启动
时间: 2024-05-09 10:18:39 浏览: 16
1. 首先,在本地创建一个目录,用于存放Dockerfile文件和ssh配置文件。
2. 在该目录下创建一个Dockerfile文件,内容如下:
```
FROM centos:latest
RUN yum -y install openssh-server && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key && \
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key && \
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key && \
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config && \
echo 'root:password' | chpasswd
CMD /usr/sbin/sshd -D
```
该Dockerfile文件的作用是:
- 基于最新版的CentOS镜像;
- 安装openssh-server;
- 生成ssh密钥;
- 允许root用户登录;
- 设置root用户密码为password;
- 启动sshd服务。
3. 在该目录下创建一个sshd_config文件,内容如下:
```
Port 22
PermitRootLogin yes
PasswordAuthentication yes
```
该sshd_config文件的作用是:
- 设置ssh服务端口为22;
- 允许root用户登录;
- 允许使用密码进行认证。
4. 在终端中进入该目录,执行以下命令,构建docker镜像:
```
docker build -t mycentos_ssh .
```
其中,-t参数用于指定镜像名称,mycentos_ssh为自定义的镜像名称,.表示当前目录为构建上下文(context)。
5. 执行以下命令,启动docker容器:
```
docker run -d -p 2222:22 --name mycentos_ssh mycentos_ssh
```
其中,-d参数用于在后台运行容器,-p参数用于将容器的22端口映射到主机的2222端口,--name参数用于指定容器名称,最后一个mycentos_ssh表示使用之前构建的镜像。
6. 执行以下命令,进入docker容器:
```
docker exec -it mycentos_ssh /bin/bash
```
其中,mycentos_ssh为容器名称,/bin/bash为进入容器后默认执行的命令。
7. 在docker容器中,执行以下命令,测试ssh连接:
```
ssh root@localhost -p 22
```
其中,-p参数用于指定ssh服务端口为22。
如果能够成功连接,并需要输入密码进行认证,则说明ssh自启动已经配置成功。
8. 在主机中,执行以下命令,测试ssh连接:
```
ssh root@localhost -p 2222
```
其中,-p参数用于指定ssh服务端口为2222。
如果能够成功连接,并需要输入密码进行认证,则说明容器的ssh服务已经通过主机的2222端口进行了映射。