とあるOSS開発をしているときに、SSHトンネル接続の検証環境が必要になった。

というわけで書いてみた。

FROM debian:12.1-slim

RUN apt-get update && apt-get install -y openssh-server
RUN  mkdir /var/run/sshd && \
    sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
    sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config && \
    sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

# 公開鍵をイメージ内にコピーする
COPY id_rsa.pub /root/authorized_keys
RUN mkdir -p ~/.ssh && \
    mv ~/authorized_keys ~/.ssh/authorized_keys && \
    chmod 0600 ~/.ssh/authorized_keys

CMD ["/usr/sbin/sshd", "-D"]

自分でイメージを作成するときはdebianのslimイメージを使用することが多いように思う

以前検証環境を作るといったらもっぱらVMを使って作っていたが、Linuxを使って良いのであれば、
こういう一時的な検証環境をサクッと作るのにDockerは非常に便利だと思う