Docker 创建SSH服务的镜像

1 背景知识

本文如何在容器中安装 Linux SSH 服务。

2 安装SSH服务

2.1 准备工作

首先,使用 almalinux:latest 镜像创建一个容器:

docker run -h c82 -itd -p 2222:22 --name c82 --privileged=true -u root almalinux:latest /usr/sbin/init

2.2 安装SSH服务软件


docker exec -it c82 bash
yum install -y passwd openssh openssh-server net-tools

3 配置SSH服务

  1. 如果要正常启动 SSH 服务,则目录 /var/run/sshd 必须存在。
mkdir -p /var/run/sshd

  1. 需要增加 sshd 服务所需的秘钥。
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' 
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' 
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
  1. 启动ssh 服务
/usr/sbin/sshd -D &
Note

如果启动无报错则配置成功。

3.1 查看SSH服务的端口

netstat -tunlp

3.2 设置root密码

echo "root" | passwd --stdin root

3.3 编写启动脚本

vi /run.sh

#!/bin/bash 
/usr/sbin/sshd -D
chmod +x run.sh

4 制作镜像

docker commit c82 ssh_server:latest

5 验证SSH服务

5.1 启动容器

  1. 使用镜像内部指定run.sh 命令。
docker run -p 10000:22 -itd ssh_server:latest /run.sh

5.2 连接容器的SSH服务

在宿主主机或其他主机上上,可以通过SSH访问10000端口来登录容器。

ssh root@192.168.10.235 -p 10000