当ssh到容器时问密码

时间:2016-05-11 10:57:38

标签: ssh docker openssh

我创建了一个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"]

supervisord / sshd.conf

[supervisord]
nodaemon=true

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

1 个答案:

答案 0 :(得分:8)

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

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

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

最好:

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

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

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

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

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

(来自GitHub public key authentication的来源“Sébastien Saunier ‏- @ssaunier