15/09/09 追記
現在のDockerには docker exec
コマンドがあるため、sshしなくても、ホストマシンからexecして入れるようになっている。
リモートマシンから直接乗り入れたいという場合でなければ、sshd入れるよりコンテナをシンプルに保てるので、こちらがオススメです
Dockerのドキュメントにある方法をScientific Linux (CentOS)にあわせてDockerfileを書く
Dockerfile
FROM jtang/scientificlinux-6.4-x86_64
RUN yum install -y openssh-server openssh-clients
RUN echo 'root:root' |chpasswd
EXPOSE 22
buildしてrunする
docker build -t test/sshd .
docker run -d -p 10022:22 test/sshd /usr/sbin/sshd -D
sshを試してもconnection refusedで動かない
なんでだろうと思って
docker run -t -i -p 10022:22 test/sshd /bin/bash
で中に入ってコマンドを叩いてみると、ssh_host_rsa_keyとssh_host_dsa_keyがないって言われた
今まで /etc/init.d/sshd start とかでしか起動したことがなかったのでわからなかったのだが、どうやらこの時に、ここらへんのキーが自動生成されるらしい
Dockerfileを編集する
Dockerfile
FROM jtang/scientificlinux-6.4-x86_64
RUN yum install -y openssh-server openssh-clients
RUN echo 'root:root' |chpasswd
# 追加分
RUN /usr/bin/ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ""
RUN /usr/bin/ssh-keygen -t dsa -b 1024 -f /etc/ssh/ssh_host_dsa_key -N ""
EXPOSE 22
これでpassなしにrsa_keyが生成される。この状態でbuildしてrunしてssh接続すると入れた