【環境構築】ssh接続可能なDockerイメージの作成の仕方
はじめに
こんにちは、がんがんです。
今回の記事はこちらの続きとなっています。
gangannikki.hatenadiary.jp
ssh接続が可能となるコンテナがあれば便利だなと思ったので、少し実装をしてみました。
今回の記事では、ssh接続が可能となるDockerイメージの構築に関する備忘録を残しておきます。
参考
公式ドキュメントはこちらです。
docs.docker.com
Dockerfileの1行1行に関する説明はこちらが非常に参考になりました。
qiita.com
一般ユーザー権限で入れるsshd専用コンテナをdockerで動かした - @znz blog
Dockerfileの構築:rootユーザの場合
下記のDockerfileは公式ドキュメントとほとんど同じものになっています。
FROM ubuntu:20.04 RUN apt-get update && apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:test' | chpasswd RUN sed -i 's/#*PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config # SSH login fix. Otherwise user is kicked off after login RUN sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]
Dockerfileの構築:一般ユーザの場合
rootユーザだと使いにくいこともあるので、一般ユーザでの作成もまとめておきます。
FROM ubuntu:20.04 ARG USER=ubuntu RUN apt-get update && apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN useradd -m -s /bin/bash ${USER} && gpasswd -a ${USER} sudo RUN echo '${USER}:${PASSWD}' | chpasswd # SSH login fix. Otherwise user is kicked off after login RUN sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd WORKDIR /home/${USER} EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]
コンテナのBuildおよびRun
$ docker build . -t test . $ docker run -d -P --name test_sshd test
実際にsshで接続するときは以下の通りです。
$ ssh root@localhost -p $(docker port test_sshd 22|sed 's/.*://')
おわりに
今回の記事ではssh接続可能なDockerイメージの作成に関する備忘録を書きました。
意外と簡単に出来ることを経験することが出来てよかったです。