ssh接続可能なDockerコンテナの作成方法
目次
- はじめに
- ベースとなるDockerfileの作成
- コンテナをbuild, runしてbashに入る
- bashでの作業とエラー確認
- 解決の手順
- Dockerfileの更新
- 最終的なDockerfileの動作確認
- 注意点とセキュリティ
- 付録: 完成したDockerfile
はじめに
dockerコンテナを本番環境に見立ててデプロイのテストをするため今回準備した。
ベースとなるDockerfileの作成
FROM ubuntu:latest
コンテナをbuild, runしてbashに入る
docker build -t my_ssh_container .
docker run -it my_ssh_container /bin/bash
bashでの作業とエラー確認
-
openssh-server
のインストール。
apt-get update && apt-get install -y openssh-server
-
sshd
のディレクトリ作成と設定。
mkdir /var/run/sshd
echo 'root:YOUR_PASSWORD' | chpasswd
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config
sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
- SSHDサーバーを起動。
/usr/sbin/sshd -D
解決の手順
- ssh接続を試みる
ssh root@localhost -p 2222
- passwordを入力
- permission denyエラーが発生。
- sshdの出力ログを確認。
- 確認事項:
- passwordが正しいこと
-
/etc/ssh/sshd_config
の設定が正しいこと
/etc/ssh/sshd_config
の設定に誤りがあることを確認。
#PermitRootLogin yes
がコメントアウトされているため、ssh接続が失敗した。
- sshの設定を修正。
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
- SSHDサーバーを再度起動。
/usr/sbin/sshd -D
- ssh接続を試みると成功。
ssh root@localhost -p 2222
=> passwordを入力
Dockerfileの更新
最終的なDockerfileの動作確認
docker run -d -p 2222:22 my_ssh_container
ssh root@localhost -p 2222
パスワードを入力: YOUR_PASSWORD
注意点とセキュリティ
rootユーザーとしてのSSH接続はリスクがあります。鍵認証の導入など、適切なセキュリティ対策を行う必要があります。
付録: 完成したDockerfile
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"]