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

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.lryc.cn/news/506577.html

相关文章:

  • Linux系统—利用systemd管控系统以及服务详解(十四)
  • 人工智能 AI 大模型研究设计与实践应用技术毕业论文
  • 已有 containerd 的情况下部署二进制 docker 共存
  • VSCode 搭建Python编程环境 2024新版图文安装教程(Python环境搭建+VSCode安装+运行测试+背景图设置)
  • vue+springboot+cas配置及cookie传递问题
  • 0009.基于springboot+layui的ERP企业进销存管理系统
  • ZYNQ初识2(zynq_7010)基于vivado,从PL端调用PS端的时钟
  • Android详解——ConstraintLayout约束布局
  • docker简单命令
  • 【linux】shell(36)-文件操作
  • c语言——数据结构【链表:单向链表】
  • ​Python 标识符是啥?​
  • 视频及JSON数据的导出并压缩
  • VScode使用教程(菜鸟版)
  • 【漏洞复现】Grafana 安全漏洞(CVE-2024-9264)
  • Android AOSP 源码中批量替换“phone“为“tablet“的命令详解
  • 基于JavaWeb(SSM+MySQL)问卷调查管理系统设计与实现毕业论文
  • 域内用户枚举与密码喷洒与密码爆破
  • DIY 集合求并集(union)运算的代码 ← Python
  • Redis bitmaps 使用
  • vue深层数据响应的问题
  • 解决Nginx + Vue.js (ruoyi-vue) 单页应用(SPA) 404问题的指南
  • 项目计划表如何制作?使用甘特图制作项目计划表的步骤
  • Flutter-底部分享弹窗(showModalBottomSheet)
  • 初学stm32 --- 时钟配置
  • LeetCode:226.翻转二叉树
  • (css)鼠标移入或点击改变背景图片
  • Unbuntu下怎么生成SSL自签证书?
  • OpenGL ES 03 加载3张图片并做混合处理
  • 深度学习-74-大语言模型LLM之基于API与llama.cpp启动的模型进行交互