docker 在centos镜像中配置ssh自启动
时间: 2024-05-02 17:22:17 浏览: 89
1. 安装 openssh-server
在 centos 镜像中安装 openssh-server:
```
yum install -y openssh-server
```
2. 配置 sshd 服务自启动
使用 systemctl 命令配置 sshd 服务自启动:
```
systemctl enable sshd.service
```
3. 启动 sshd 服务
使用 systemctl 命令启动 sshd 服务:
```
systemctl start sshd.service
```
4. 验证 sshd 服务是否正常启动
使用 ssh 命令连接 centos 镜像:
```
ssh root@<centos_container_ip>
```
如果连接成功,说明 sshd 服务已经正常启动。
相关问题
在docker上使用dockerfile基于centos镜像配置ssh自启动
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端口进行了映射。
docker commit centos-ssh centos:ssh
这条命令的作用是将名为 "centos-ssh" 的容器创建一个新的镜像,并将其命为 "centos:ssh"。
具体而,"docker commit" 命令用于将一个器的文件系统保存为一个新的镜像。在这个令中,"centos-" 是要提交的容器的名称或 ID,"centos" 是要创建的新镜像的名称,"ssh" 是给新镜像打的标签。
这个命令的结果是会在本地镜像仓库中创建一个名为 "centos:ssh" 的镜像,可以使用 "docker images" 命令来查看它。可以将这个镜像推送到 registry 中,或者直接在此基础上创建新的容器。
阅读全文