【问题标题】:password define for ssh connection into docker container定义 ssh 连接到 docker 容器的密码
【发布时间】:2017-08-29 21:02:00
【问题描述】:

我想通过 SSH 连接到我的 docker 容器。为此,我使用此 Dockerfile 和此命令 docker build -t test/toto . 创建了映像:

FROM ubuntu:14.04.4
MAINTAINER Darkomen <darkomen@xxx.com>

# Let the conatiner know that there is no tty
ENV DEBIAN_FRONTEND noninteractive

RUN sudo apt-get -y update

RUN sudo apt-get -y install software-properties-common python-software-properties
RUN sudo add-apt-repository main
RUN sudo add-apt-repository universe
RUN sudo add-apt-repository restricted
RUN sudo add-apt-repository multiverse

RUN sudo apt-get -y update

#RUN sudo apt-get -y install linux-headers-$(uname -r) build-essential
RUN sudo apt-get -y install linux-headers-generic build-essential
RUN apt-get -y install zlib1g-dev libssl-dev libreadline-gplv2-dev
RUN apt-get -y install curl unzip
RUN apt-get -y install software-properties-common
RUN apt-get -y install gnupg2

# others tools
RUN sudo apt-get -y install nano
RUN sudo apt-get -y install vim
RUN sudo apt-get -y install aptitude
RUN sudo apt-get -y install git
RUN sudo apt-get -y install openjdk-7-jdk
RUN sudo apt-get -y install whois
RUN sudo apt-get -y install dos2unix

# SSH
RUN apt-get -y install openssh-server
RUN mkdir -p /var/run/sshd
RUN echo 'root:screencast' |chpasswd

EXPOSE 22
CMD    /usr/sbin/sshd -D

接下来我用这个命令启动了我的容器:docker run test/toto -p 42000:22

我的容器运行完美,我启动这个命令进入这个容器:docker run -dt -p 42000:22 test/toto

现在我的 docker-machine 和 docker 容器(基于我的 dockerfile)运行。我可以看到,因为docker ps -a 告诉我:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                   NAMES
a28ad08fd393        test/toto           "/bin/sh -c '/usr/sbi"   22 minutes ago      Up 22 minutes                 0.0.0.0:42000->22/tcp   admiring_feynman

为了在我的容器中连接,我启动了这个命令:ssh root@192.168.99.100 -p 42000

但它告诉我输入密码。我尝试了很多东西,但没有运行。我在创建和配置 docker 的过程中忘记了什么?

192.168.99.100是docker-machine inspect命令返回的IP

我还尝试将 root 密码更改到我的容器中并重复 ssh 命令访问。但什么都没有改变。我无法连接到容器。

技术信息:

  • 操作系统:Windows 7 Pro
  • Docker 版本:1.12.2 build bb80604
  • Docker 系统:docker 工具箱(基于 VirtualBox)
  • VirtualBox 版本:5.0.14r105127

【问题讨论】:

  • docker run 工作吗?
  • 嗯,可能忘记设置root密码了?
  • 我的 docker 运行,完美运行。我已经在 Dockerfile 中设置了 root 密码,但也许你有更好的解决方案......

标签: ubuntu docker ssh docker-machine


【解决方案1】:

您需要为您的 sshd 配置 root 登录:

手册:

vi /etc/ssh/sshd_config

PermitRootLogin without-password 更改为:

PermitRootLogin yes

然后:

service ssh restart

现在再试一次。如果一切顺利,您需要更改 docker 文件以在构建步骤中进行此更改。

【讨论】:

  • service ssh restart 从容器中生成退出并停止它。我不能尝试这个技巧。
  • 在您的 docker 文件中执行此操作,然后通过复制指令,在启动 ssh 服务之前。
【解决方案2】:

用于创建 SSH 连接并将其公开到容器中的 Dockerfile 脚本:

# SSH
RUN apt-get -y install openssh-server
RUN mkdir -p /var/run/sshd

# authorize SSH connection with root account
RUN sed -i '/^#/!s/PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sudo service ssh restart

# change password root
RUN echo "root:docker"|chpasswd

【讨论】:

  • Dockerfile中没有sudo,Dockerfile总是使用sudo。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 2021-03-05
  • 1970-01-01
  • 2020-05-21
  • 2015-09-19
  • 2013-09-05
相关资源
最近更新 更多