Docker容器中启用SSH服务的方法步骤

 更新时间:2025年01月03日 09:13:05   作者:Acaibird.  
本文主要介绍了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 或其他工具管理多个进程。

到此这篇关于Docker容器中启用SSH服务的方法步骤的文章就介绍到这了,更多相关Docker启用SSH服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 使用dockercompose搭建springboot-mysql-nginx应用

    使用dockercompose搭建springboot-mysql-nginx应用

    这篇文章主要介绍了使用dockercompose搭建springboot-mysql-nginx应用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • Docker本地镜像的导出导入两种方案介绍

    Docker本地镜像的导出导入两种方案介绍

    这篇文章主要介绍了Docker本地镜像的导出导入两种方案的相关资料,两种方法分别是export/import和save/load两种方案,文中并对比了它们的差别和应用场景,需要的朋友可以参考下
    2025-03-03
  • docker搭建redis主从哨兵集群的实现步骤

    docker搭建redis主从哨兵集群的实现步骤

    本文主要介绍了docker搭建redis主从哨兵集群的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Docker安装RabbitMQ的超详细步骤

    Docker安装RabbitMQ的超详细步骤

    RabbitMQ是一套开源的消息队列服务软件,是由LShift提供的一个 Advanced Message Queuing Protocol的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,这篇文章主要给大家介绍了关于Docker安装RabbitMQ的超详细步骤,需要的朋友可以参考下
    2022-08-08
  • Docker方式安装gitlab--ARM64平台安装详解

    Docker方式安装gitlab--ARM64平台安装详解

    这篇文章主要介绍了Docker方式安装gitlab--ARM64平台安装,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Docker执行(进入)镜像实践

    Docker执行(进入)镜像实践

    本文介绍了如何使用Docker命令查看、安装、删除镜像,以及如何运行镜像并设置自动重启,还详细介绍了如何进入Docker容器并进行一些常见操作,如设置MySQL事务超时时间,最后,文章鼓励大家参考并支持脚本之家
    2025-12-12
  • 聊聊docker跨主机之间容器通信问题

    聊聊docker跨主机之间容器通信问题

    这篇文章主要介绍了docker跨主机之间容器通信问题,创建网桥之后,使用ifconfig查看会多出一个网桥,该网桥在docker启动或者重启之后,会自动显示出来,具体实践跟随小编一起看看吧
    2022-05-05
  • macOS上用Docker Desktop快速部署n8n的完整流程

    macOS上用Docker Desktop快速部署n8n的完整流程

    n8n是一个源代码开放的低代码工作流自动化平台,它将人工智能功能与业务流程自动化相结合,这篇文章主要介绍了macOS上用Docker Desktop快速部署n8n的完整流程,需要的朋友可以参考下
    2025-12-12
  • 详解Docker 端口映射与容器互联

    详解Docker 端口映射与容器互联

    这篇文章主要介绍了详解Docker 端口映射与容器互联 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • docker安装ElasticSearch:7.8.0集群的详细教程

    docker安装ElasticSearch:7.8.0集群的详细教程

    这篇文章主要介绍了docker安装ElasticSearch:7.8.0集群的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论