LoginSignup
4
6

More than 5 years have passed since last update.

パスワードも公開鍵もなしに ssh できる Docker イメージ

Last updated at Posted at 2016-08-04

使い捨てのテスト用のコンテナを作るため、パスワードも公開鍵もなしに ssh できる Docker イメージを作ってみた。

用意するファイル

Dockerfile

FROM ubuntu
RUN apt-get update \
  && apt-get install -y openssh-server \
  && rm -rf /var/lib/apt/lists/*

# empty root password
RUN passwd -d root

# allow root to ssh without password
COPY sshd_config /etc/ssh/sshd_config

sshd_config

PermitEmptyPasswords yes
PasswordAuthentication yes
UsePAM no

イメージ作成

$ ls
Dockerfile sshd_config
$ docker build . -t ubuntu_sshd

コンテナ上の sshd 起動

$ docker run -it ubuntu_sshd
# service ssh start
# ifconfig eth0
=> IP アドレスを取得(例:173.17.0.2)

コンテナに ssh 接続

$ ssh -l root 173.17.0.2

感想

Dockerfile

Docker 初心者なので、こういう使い方でよいのかよくわからない。
本当は、CMD とか使って、docker run した瞬間に sshd が立ち上がるのがかっこいい気がするが、どうやってデーモン化して永続的にコンテナーで走らせられるのかよくわからない。

たぶん

CMD ["service", "ssh", "start"]

で行けそう。でも、同時に IP アドレスも表示するのは、どうしたらいいのだろうか?

sshd_config

デフォルトのファイルはいろいろいっぱい書いてあるが、ほとんどはデフォルト値が書かれているだけっぽく、上のようにたった数行書くだけでも sshd が立ち上がるのは興味深い。

参考

公開鍵なし/パスワードなしでSSHログインする設定

追記

「Docker イメージで sshd」というと、いまや良くないイメージがあるが、まえがきで書いたとおり、これは技術テスト用のイメージであって、実運用を念頭においたものではないことを断っておく。

たしかに実運用ではいまどき ssh は極力使わないほうがいいだろう。ただ、どんな状況でも絶対にダメというわけではなく、技術テストなどの適切な場面があれば使ってもよいだろう。TPO に合わせて使い分けていけばいいだけのことだ、というのが私の意見だ。

4
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
4
6