在Docker 建立一个SSH连接的 Ubuntu 容器

  1. 在一个文件夹中创建dockerfile 文件,文件内容如下

    powershell 复制代码
    # 使用官方的 Ubuntu 镜像
    FROM ubuntu:latest
    
    # 安装 SSH 服务
    RUN apt-get update && apt-get install -y openssh-server
    
    # 创建 SSH 目录并设置权限
    RUN mkdir -p /var/run/sshd && ssh-keygen -A
    RUN echo 'root:123456' | chpasswd
    
    # 显式开启 root + 密码登录,避免不同基础镜像默认值差异
        # PermitRootLogin yes:允许 root 登录
        # PasswordAuthentication yes:允许密码认证
        # KbdInteractiveAuthentication no:关闭交互式认证(避免和密码认证混杂)
        # UsePAM no:关闭 PAM(容器场景常用于减少兼容问题)
    RUN sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config \
        && sed -ri 's/^#?PasswordAuthentication\s+.*/PasswordAuthentication yes/' /etc/ssh/sshd_config \
        && sed -ri 's/^#?KbdInteractiveAuthentication\s+.*/KbdInteractiveAuthentication no/' /etc/ssh/sshd_config \
        && sed -ri 's/^#?UsePAM\s+.*/UsePAM no/' /etc/ssh/sshd_config
    
    # 暴露 SSH 端口
    EXPOSE 22
    
    # 设置容器启动时自动运行 SSH 服务
    CMD ["/usr/sbin/sshd", "-D"]
  2. dockerfile 文件所在的文件夹中打开终端,输入如下命令构建一个镜像,镜像名字叫ubuntu-with-ssh

    powershell 复制代码
    docker build -f dockerfile -t ubuntu-with-ssh .
  3. 在终端中输入如下命令,将根据镜像运行一个容器,容器名字叫 ubuntu-ssh

    powershell 复制代码
    docker run -d -p 2222:22 --name ubuntu-ssh ubuntu-with-ssh
  4. 在终端中使用如下命令,根据提示输入密码,就可以连接ubuntu 了

    • 注意:端口用的是主机的 2222 端口
    powershell 复制代码
    ssh root@127.0.0.1 -p 2222
    • 如果是使用软件连的,可以参考图片
相关推荐
AOwhisky4 小时前
下一代容器来了?Docker 宣布原生支持 WebAssembly
java·运维·docker·容器·rust·wasm
不羁的木木7 小时前
HarmonyOS APP实战-基于Image Kit的图像处理APP - 第9篇:批量处理与编辑历史
图像处理·ubuntu·harmonyos
春卷同学8 小时前
HarmonyOS掌上记账APP开发实践第15篇:ArkTS 类型系统深度解析 — 从接口到联合类型的灵活运用
ubuntu·华为·harmonyos
念何架构之路10 小时前
Docker 容器状态机 学习
java·学习·docker
jieyucx10 小时前
Docker 入门第六阶段:综合实战项目
运维·docker·容器
不能只会打代码11 小时前
Day 002 — Python 工程化 & FastAPI & 数据库速通
数据库·redis·python·docker·fastapi·测试
海涛从不浪12 小时前
03 oect刷入Armbian后安装Onepanel并进行docker迁移
运维·docker·容器·onepanel
春卷同学14 小时前
HarmonyOS掌上记账APP开发实践第18篇:编译时优化与 ArkTS 语法限制 — 提升应用性能的编码规范
linux·运维·ubuntu
爸爸61914 小时前
鸿蒙应用开发实战【08】— AppStorage 全局状态与跨页面通信
ubuntu·华为·harmonyos·鸿蒙系统
yanjieliyun14 小时前
家庭服务器从入门到精通 · 第 5 篇 · NPM反向代理从安装到起飞:一条命令搞定HTTPS
docker