如何在Docker容器中安装和配置SSH服务?

在Docker容器中安装和配置SSH服务,可以通过以下步骤进行:

  1. 创建Dockerfile,用于构建SSH服务镜像:
dockerfile
FROM ubuntu:20.04

RUN apt update && apt install -y openssh-server

RUN mkdir /var/run/sshd
RUN echo 'root:password' | chpasswd  # 设置root密码

RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config  # 允许root登录

EXPOSE 22   # 暴露22端口

CMD ["/usr/sbin/sshd", "-D"]   # 运行SSH服务
  1. 构建SSH服务镜像:
docker build -t mysshd .
  1. 运行SSH服务容器:
docker run -d -p 22:22 --name sshd mysshd

此命令将SSH服务镜像运行在后台,映射宿主机22端口,命名容器为sshd。

  1. 使用SSH连接到容器:
# root用户连接 
ssh root@host -p 22  
password  

# 中继SSH连接到容器   
ssh -o ProxyCommand="ssh -W %h:%p user@host" root@localhost -p 22 
  1. 在容器中配置SSH密钥登录:
# 在宿主机上生成SSH密钥对
ssh-keygen -t rsa -b 4096

# 将公钥追加到容器的authorized_keys文件
docker cp id_rsa.pub sshd:/root/.ssh/authorized_keys

# 测试密钥登录 
ssh root@host -i id_rsa -p 22