【问题标题】:How to SSH into docker container by a non-root user of that container?如何由该容器的非 root 用户通过 SSH 连接到 docker 容器?
【发布时间】:2020-04-14 07:23:03
【问题描述】:

我正在使用 OpenSSH 她。我可以使用root@serverIP -p portNumber 轻松地 ssh,但是每当我尝试通过像 user@@serverIP -p portNumber 这样的 docker 容器用户进行 ssh 时,它都会拒绝我的权限。

此外,当我选择使用我的用户而不是 root 启动容器时,我还看到 ssh 服务没有启动。请帮我看看我在这里错过了什么?

我在下面给出我的 dockerfile:

P.S:我知道我可以使用 docker exec 代替 ssh,但我有一个严格的条件要在这里使用 ssh。谢谢。

FROM ubuntu:16.04

MAINTAINER Mahiuddin Al Kamal <mahiuddin_al.kamal@mailbox.tu-dresden.de>

RUN apt-get update
RUN apt-get upgrade -y

RUN useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo -u 1000 ubuntu

RUN apt-get install -y openssh-server build-essential wget make python gcc sshpass vim-tiny

RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

RUN wget -O mcperf.tar.gz https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/twemperf/mcperf-0.1.1.tar.gz
RUN mkdir mcperf && tar -xvf mcperf.tar.gz --strip-components=1  -C ./mcperf/
RUN cd /mcperf && ./configure && make && make install

RUN wget -O dude.tar.gz https://bitbucket.org/db7/dude/get/v3.1.tar.gz && mkdir dude && tar -xvf dude.tar.gz --strip-components=1 -C ./dude/
RUN cd /dude && python setup.py install

RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

RUN sed -i 's/22/10023/' /etc/ssh/sshd_config

RUN apt-get -y install r-base

RUN echo 'screencast' > sshpass.txt && chmod 777 sshpass.txt

#sshpass -p screencast ssh -o StrictHostKeyChecking=no root@172.19.0.2
#sshpass -f sshpass.txt ssh root@172.19.0.2 


RUN mkdir /home/ubuntu/a2p08

COPY Benchmark.py /home/ubuntu/a2p08/
COPY Dudefile /home/ubuntu/a2p08/
COPY graphs.R /home/ubuntu/a2p08/
COPY run.sh /home/ubuntu/a2p08/

WORKDIR /home/ubuntu/a2p08/

RUN chmod 777 *

USER ubuntu

EXPOSE 10023

CMD ["/usr/sbin/sshd", "-D"]

【问题讨论】:

    标签: docker ssh dockerfile openssh


    【解决方案1】:

    我希望 sshd 服务以“root”运行,所以尝试删除

    USER ubuntu
    

    另外,设置用户“ubuntu”密码,

    RUN echo 'ubuntu:ubuntu' | chpasswd
    

    那么你应该可以使用用户“ubuntu”进行ssh

    【讨论】:

      【解决方案2】:

      试试:

      ssh docker@&lt;docker machine ip&gt;。即ssh docker@192.168.99.100

      password: tcuser

      【讨论】:

        猜你喜欢
        • 2015-09-19
        • 2017-06-30
        • 1970-01-01
        • 2016-10-24
        • 2014-10-15
        • 1970-01-01
        • 1970-01-01
        • 2019-03-07
        • 2016-11-23
        相关资源
        最近更新 更多