Centos7创建一个带sshd服务的Docker容器

本文介绍如何通过Docker部署SSH服务,并实现免密登录。详细步骤包括创建必要的配置文件、编写Dockerfile、构建镜像及运行容器。此外还提供了VSCode连接容器的配置示例及异常处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备工作

在Dockerfile所在目录下,新建两个文件

touch run.sh
touch authorized_keys

run.sh

#!/bin/bash
/usr/sbin/sshd -D

authorized_keys

把你的公钥复制到这文件里,一般是id_rsa.pub文件,
或者你想办法把文件弄过来改成这个名字一样可以

Dockerfile

FROM [你需要启动sshd服务的镜像]
RUN yum install -y  openssh-server \
    && yum clean all \
    # 生成密钥文件
    && 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
# 配置免密和自启动脚本
ADD authorized_keys /.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh \
	# 似乎ADD命令没法添加到用户根目录,所以需要移动下
    && mv /.ssh ~/;
# 开放22端口
EXPOSE 22
# 设置脚本自启动
CMD ["/run.sh"]
创建镜像文件
dockers built -t [你算便取个标签名] .
启动容器
# 这里创建端口映射,访问主机的映射端口 就可以访问到容器的22端口
# 也就是说连接容器直接使用 ssh -l root [主机地址] -p [映射端口]就可以了
docker run -d -p [你想要映射的端口]:22 [你刚给镜像取的标签名]
在vscode 中连容器配置文件这么填
Host [给你的容器取个名字]
  HostName [容器所在主机ip]
  Port [映射端口]
  User root
异常处理
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

如果遇到上面异常,执行下面的命令即可

ssh-keygen -R [你容器所在主机ip]:[映射端口]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值