DockerでSSHができるコンテナの作成を行う記事はたくさん見つかるのですが、パスワード認証でSSH接続ができるようにする記事は少なかったので書きます。
ubuntuのDockerfile
SSHをされる側はubuntu:latest
で行います。
内容としてはopenssh-server
をインストールして、パスワードを変更したのち設定を変更してsshd
を起動しているだけ。ubuntuコンテナのroot
のパスワードがYOUR_PASSWORD
になります。
FROM ubuntu:latest
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:YOUR_PASSWORD' | chpasswd
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
docker build
コマンドを使ってもいいのですが、面倒なのでdocker compose
を用います。ホストOSの22番はすでに埋まってると思うので2222番にコンテナの22番を設定します。
version: "3"
services:
server:
build: ./ubuntu
restart: always
ports:
- "2222:22"
ディレクトリ全体は以下の通り。
$ tree
├── compose.yml
└── ubuntu
└── Dockerfile
いざ接続
以下のコマンドを用いて接続できます。
❯ ssh root@127.0.0.1 -p 2222
root@127.0.0.1\'s password:
Welcomeが表示されて無事SSH接続が確認できました!
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.49-linuxkit)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
Last login: Tue Dec 19 15:49:22 2023 from 172.24.0.1
root@0621f159dd82:~#
おしまい