【问题标题】:Asked password when ssh to containerssh 到容器时询问密码
【发布时间】:2016-09-06 17:35:35
【问题描述】:

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

【问题讨论】:

    标签: ssh docker openssh


    【解决方案1】:

    您需要将您的公钥添加到容器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 身份验证机制:

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

    【讨论】:

    • 感谢您的回答,但如果我想让人们在没有 ssh 的情况下登录。我的意思是只有密码。这可能吗?
    • @Toshi 你的问题是关于使用 ssh,而不是使用用户名/密码,不是吗?
    • 是的,但我只是对此感到好奇。因为有 2 种使用 ssh 登录的方法。 1. 公共认证密钥 2. 用户名/密码。当我尝试使用用户名/密码时,我被要求输入密码,但我无法登录(我不知道确切的密码。)。
    • @Toshi 这很有意义。 root 不是您可以通过用户名/密码登录的帐户。因此,如果您希望您的 ssh 会话成功进行身份验证,则需要将您的公钥放在正确的位置。
    • @vishal.k 我不熟悉有关 docker exec 的凭据需求。也许您可以将此评论作为一个单独的问题,供社区查看?
    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    相关资源
    最近更新 更多