当ssh到容器时问密码

Tos*_*shi 5 ssh openssh docker

我创建了一个docker镜像,经过测试,用SSH登录容器.但是,当我尝试ssh到容器时,我被问到root密码.有任何想法来解决它.

Dockerfile

FROM ubuntu:trusty

RUN apt-get update

RUN apt-get install -y openssh-server supervisor vim build-essential git
RUN mkdir -p /var/run/sshd
ADD supervisord/sshd.conf /etc/supervisor/conf.d/sshd.conf
RUN echo 'root:root' | chpasswd

EXPOSE 22
CMD ["/usr/bin/supervisord"]
Run Code Online (Sandbox Code Playgroud)

supervisord/sshd.conf

[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 8

您需要将公钥添加到容器中 root/.ssh/authorized_keys

如果sshd在那里找不到您的公钥,它将回退到用户名/密码身份验证.

一个例子是" 在Docker镜像上设置ssh公钥 ",但我不喜欢它,因为它意味着容器有私钥(它不需要它)

最好是:

  • 在本地生成您的公钥/私钥.
  • COPY yourPublicKey /root/.ssh/authorized_keys在Dockerfile中添加一个

这将生成一个图像,其容器将能够被ssh访问.

确保在您的主机上$HOME/.ssh确实拥有私钥id_rsa和公钥id_rsa.pub.

这将启用docker主机和docker容器之间的ssh身份验证,遵循此处显示的常规(即,特定于docker)ssh身份验证机制:

http://sebastien.saunier.me/images/posts/SSH%20Connection%20explained.png

(来自SébastienSaunier的源代码" GitHub公钥认证 " - @ssaunier)