LoginSignup
6
6

ssh接続可能なDockerコンテナの作成方法

Posted at

ssh接続可能なDockerコンテナの作成方法

目次

  1. はじめに
  2. ベースとなるDockerfileの作成
  3. コンテナをbuild, runしてbashに入る
  4. bashでの作業とエラー確認
  5. 解決の手順
  6. Dockerfileの更新
  7. 最終的なDockerfileの動作確認
  8. 注意点とセキュリティ
  9. 付録: 完成したDockerfile

はじめに

dockerコンテナを本番環境に見立ててデプロイのテストをするため今回準備した。

ベースとなるDockerfileの作成

FROM ubuntu:latest

コンテナをbuild, runしてbashに入る

docker build -t my_ssh_container .
docker run -it my_ssh_container /bin/bash

bashでの作業とエラー確認

  1. openssh-serverのインストール。
apt-get update && apt-get install -y openssh-server
  1. 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
  1. SSHDサーバーを起動。
/usr/sbin/sshd -D

解決の手順

  1. ssh接続を試みる
ssh root@localhost -p 2222
  1. passwordを入力
  2. permission denyエラーが発生。
  3. sshdの出力ログを確認。
  4. 確認事項:
    • passwordが正しいこと
    • /etc/ssh/sshd_configの設定が正しいこと

/etc/ssh/sshd_configの設定に誤りがあることを確認。
#PermitRootLogin yesがコメントアウトされているため、ssh接続が失敗した。

  1. sshの設定を修正。
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
  1. SSHDサーバーを再度起動。
/usr/sbin/sshd -D
  1. 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"]
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6