ssh 到容器时询问密码

Asked password when ssh to container

我创建了一个 docker 映像,该映像经过测试以使用 SSH 登录容器。但是,当我尝试通过 ssh 进入容器时,系统会询问我 root 密码。任何解决它的想法。

Docker 文件

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"]

supervisord/sshd.conf

[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D

您需要将 public 密钥添加到容器 root/.ssh/authorized_keys

如果 sshd 在那里找不到您的 public 密钥,它将回退到 username/password 身份验证。

一个例子是“Setting ssh public keys on Docker image”,但我不喜欢它,因为它意味着容器有私钥(它不需要它)

最好是:

  • 在本地生成您的 public/private 密钥。
  • 在您的 Dockerfile
  • 中添加 COPY yourPublicKey /root/.ssh/authorized_keys

这会生成一个图像,其容器将能够通过 ssh 访问。

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

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

(来源“GitHub public key authentication", from Sébastien Saunier ‏- @ssaunier)