私は公開鍵認証を使用してMac OSX 10.10のboot2dockerからCentOS 7.1へのSSHを試しています。問題は、Connection reset by 192.168.99.100
CentOsにログインするとsshが表示されることです(192.168.99.100はコンテナのIPアドレスです)。 CentOSイメージの構築に使用するDockerfileは次のとおりです。
FROM centos:centos7
MAINTAINER moutend <[email protected]>
RUN yum -y update; yum clean all
RUN yum -y install openssh-server
RUN mkdir /var/run/sshd
RUN sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
RUN sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
ADD id_ecdsa.pub /home/moutend/.ssh/authorized_keys
RUN adduser -g wheel moutend
RUN echo moutend:foobarfoobar | chpasswd
RUN chown -R moutend:wheel /home/moutend
RUN chmod 600 /home/moutend/.ssh/authorized_keys
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
次のコマンドは私が実行したコマンドです。
# On Mac OSX
ssh-keygen -t ecdsa
docker-machine create -d virtualbox dev
docker-machine scp myDockerfile id_ecdsa.pub dev:
docker-machine ssh dev # Login to boot2docker
# On boot2docker
docker build -t test -f myDockerfile .
docker run -d -P test
docker port `docker ps -lq` # Get the port for ssh
これにより、次のエラーメッセージが表示されます。
ssh-add id_ecdsa
ssh moutend@`docker-machine ip dev` -p 32772
Connection reset by 192.168.99.100
もちろんポート番号は正しいです。だから接続リセットがなぜ起こるのかわかりません。この問題をどのように解決できますか?
答え1
最初に試すことは、ssh
以下を追加して詳細レベルを上げることです-v
。
ssh -v moutend@`docker-machine ip dev` -p 32772
これにより、追加のデバッグ情報が提供されます。
これは役に立たず、docker run --name sshtest -d -P test
コンテナ名を指定したと仮定しますsshtest
。
docker logs sshtest
(まだ)実行中であることを確認してくださいsshd
。 (これが見せるでしょう /etc/ssh/ssh_host_ed25519_key
ホストSSHキーがありません。以下を実行する必要があります。 ssh-keygen -A
このホストキーを一度生成してください。 /etc/ssh/
)
exec
まだ実行している場合は、コンテナに-ingして内部設定の正確性を確認できます。
docker exec -it sshtest /bin/bash
もちろん、それを使用するためにdocker exec
最初から多くのコンテナで実行する必要はありません。sshd
同様の設定で他の人が行ったことも確認できます(まだ行っていない場合は、例:この設定