我正在尝试使用公钥身份验证从 Mac OSX 10.10 ssh 登录到 boot2docker 上的 CentOS 7.1。问题是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
您还可以查看其他人在类似设置中所做的操作(如果您还没有,例如这个设置