Docker sshd 镜像

#gossip

Ubuntu 26.04 基础镜像:

FROM ubuntu:26.04

ARG USERNAME=ubuntu

ENV TZ=Asia/Shanghai

USER root

RUN apt-get update && apt-get install -y \
    openssh-server sudo locales tzdata \
    && locale-gen en_US.UTF-8 \
    && ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone \
    && apt-get clean && rm -rf /var/lib/apt/lists/*
RUN usermod -l ${USERNAME} ubuntu \
    && groupmod -n ${USERNAME} ubuntu \
    && usermod -d /home/${USERNAME} -m ${USERNAME}
RUN echo "${USERNAME} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${USERNAME} \
    && chmod 0440 /etc/sudoers.d/${USERNAME}
RUN echo '${USERNAME}:${USERNAME}' | chpasswd \
    && mkdir /var/run/sshd || true \
    && sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config \
    && ssh-keygen -A

USER ${USERNAME}
WORKDIR /home/${USERNAME}
RUN mkdir -p /home/${USERNAME}/.ssh && chmod 700 /home/${USERNAME}/.ssh
COPY --chown=${USERNAME}:${USERNAME} authorized_keys /home/${USERNAME}/.ssh/authorized_keys
RUN chmod 600 /home/${USERNAME}/.ssh/authorized_keys

ENTRYPOINT ["/bin/bash", "-c"]
CMD ["sudo /usr/sbin/sshd -D"]

EXPOSE 22