当前位置: 首页 > article >正文

Docker 容器中启用 SSH 服务

在 Docker 容器中运行 SSH 服务需要一些调整,因为 Docker 容器通常使用 init 系统而不是完整的 systemd。以下是配置 SSH 服务在 Docker Ubuntu 容器中运行的步骤:


1. 安装 SSH 服务

如果还未安装 OpenSSH,请先安装:

apt update
apt install openssh-server -y

2. 配置 SSH 服务

编辑 SSH 配置文件,确保服务可以正常启动。

编辑配置文件:
nano /etc/ssh/sshd_config
检查以下配置项并修改(如有需要):
  • 禁用 PAM(Docker 容器中推荐):
    UsePAM no
    
  • 允许密码登录(如需通过密码登录):
    PasswordAuthentication yes
    

保存并退出(Nano 中按 Ctrl+O 保存,Ctrl+X 退出)。


3. 创建 SSH 运行目录

SSH 服务需要 /run/sshd 目录。

mkdir -p /run/sshd

4. 启动 SSH 服务

由于 Docker 容器通常没有 systemd,需要直接运行 sshd 命令来启动服务。

/usr/sbin/sshd -D

-D 选项让 sshd 以前台模式运行,适合 Docker 容器。


5. 后台运行 SSH 服务(可选)

如果想让 SSH 在容器中持续运行,可以在启动容器时使用 docker run 命令运行一个附带 sshd 的入口点脚本。

示例 Dockerfile
FROM ubuntu:latest

# 安装 OpenSSH 服务
RUN apt update && apt install -y openssh-server && mkdir -p /run/sshd

# 配置 SSH
RUN echo 'root:password' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

# 启动 SSH 服务
CMD ["/usr/sbin/sshd", "-D"]

构建和运行容器:

docker build -t ubuntu-ssh .
docker run -d -p 2222:22 ubuntu-ssh

这将启动一个允许通过 SSH 连接的 Docker 容器,并将主机的端口 2222 映射到容器的端口 22


6. 测试 SSH 连接

使用以下命令从主机连接到容器:

ssh root@localhost -p 2222

输入之前设置的密码(如 password),即可登录到容器中。


7. 注意事项

  • 安全性: 不建议在生产环境中使用密码登录,推荐使用密钥认证。
  • 容器保活: 如果需要 SSH 和其他服务同时运行,可使用 supervisord 或其他工具管理多个进程。

http://www.kler.cn/a/443611.html

相关文章:

  • CKA认证 | Day7 K8s存储
  • 前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案
  • 网络智能服务
  • WebRTC服务质量(11)- Pacer机制(03) IntervalBudget
  • benchmarksql5.0 测试工具如何在达梦上能够跑起来?
  • Java线程池面试题
  • linux蓝牙模块和手机配对
  • AIA - 新增的CSR
  • Spring Boot 集成 MyBatis 全面讲解
  • PHPUnit使用指南:编写高效的单元测试
  • 超实用教程:在Ubuntu上用Docker搭建安全视频聊天系统briefing
  • 阿里云免费SSL证书调整为3个月后,自动升级SSL证书方案
  • 20241219中科创达的高通CM6125开发板接原装的GPS天线可以定位了
  • html基础-认识html
  • SpringBoot开发——详解Tomcat线程池默认最大支持200并发
  • 51c视觉~合集36
  • 【Spark】Spark SQL执行计划-精简版
  • 聊聊航空航天软件中常用的SIFT(Software-Implemented Fault Tolerance)三版本方案
  • 前端打印(html)
  • 设计模式之创建型
  • sql server 备份恢复
  • 《Vue3实战教程》5:响应式基础
  • 【异常】GL-SFT1200路由器中继模式,TL-CPE1300D无法搜寻5G网问题分析
  • 如何在STM32中使用RTC定时器
  • [一招过] Python的正则表达式篇
  • 基于51单片机的交通灯设计—夜间、紧急、复位、可调时间、四个数码管显示