我创建了一个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
答案 0 :(得分:8)
您需要将公钥添加到容器root/.ssh/authorized_keys
如果sshd在那里找不到您的公钥,它将回退到用户名/密码身份验证。
一个例子是“Setting ssh public keys on Docker image”,但我不喜欢它,因为这意味着容器有私钥(它不需要它)
最好:
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”