공개 키 인증을 사용하여 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
유사한 설정에서 다른 사람들이 수행한 작업도 확인할 수 있습니다(아직 수행하지 않은 경우, 예:이 설정