Dockerfile

# 使用官方 Python 3.12 on Debian 12 (bookworm)
FROM python:3.12-bookworm

ENV DEBIAN_FRONTEND=noninteractive \
    PYTHONUNBUFFERED=1 \
    TZ=Asia/Shanghai

# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone

# 替换为清华大学 Debian 源(deb822 格式)
RUN echo "Types: deb\n\
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian\n\
Suites: bookworm\n\
Components: main contrib non-free non-free-firmware\n\
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg\n\
\n\
Types: deb\n\
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian-security\n\
Suites: bookworm-security\n\
Components: main contrib non-free non-free-firmware\n\
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg" \
> /etc/apt/sources.list.d/debian.sources

# 安装 openssh-server
RUN apt-get update && \
    apt-get install -y --no-install-recommends openssh-server && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 创建 SSH 所需目录
RUN mkdir -p /run/sshd

# 允许 root 登录(仅测试用)
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
    sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config

# 配置 pip 使用阿里云源
RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

# 启动脚本:从环境变量 ROOT_PASSWORD 设置 root 密码
RUN echo '#!/bin/bash\n\
if [ -z "$ROOT_PASSWORD" ]; then\n\
  echo "Error: ROOT_PASSWORD environment variable not set."\n\
  echo "Please run with: -e ROOT_PASSWORD=your_password"\n\
  exit 1\n\
fi\n\
echo "root:$ROOT_PASSWORD" | chpasswd\n\
exec /usr/sbin/sshd -D\n' \
> /entrypoint.sh && chmod +x /entrypoint.sh

EXPOSE 22

ENTRYPOINT ["/entrypoint.sh"]

创建镜像

docker build -t py-ssh .

运行容器

docker run -d --name my_ssh -p 2222:22 -e ROOT_PASSWORD='Password123' py-ssh

连接容器

ssh root@localhost -p 2222

进去之后输入上面生成的密码 Password123

更多推荐