为什么在通过 SSH 连接到 docker 容器时,我会在提示符中得到 `$` 而不是 `user@hostname:~$`?我是否以用户身份登录?

塞宾文森特

我正在尝试通过 ssh 进入我的 Ubuntu docker 容器。但是当我尝试时,它不是以我的用户身份进入,而是进入某个 DOS 终端。

当我 SSH 进入容器时的终端

但是当我使用bash命令时,它会像往常一样为我的用户提供一个 bash 终端。

给出 bash 命令后

以下是我用于 Ubuntu 容器的 Dockerfile

FROM ubuntu:18.04
RUN apt update
RUN apt-get -y install mysql-client
RUN DEBIAN_FRONTEND=noninteractive apt -y install awscli --upgrade
RUN apt-get -y install openssh-server
RUN mkdir /var/run/sshd
RUN useradd remote_user && \
    echo "remote_user:password" | chpasswd && \
    mkdir /home/remote_user/.ssh -p && \
    chmod 700 /home/remote_user/.ssh && \
    mkdir -p -m0755 /var/run/sshdh   
COPY remote-key.pub /home/remote_user/.ssh/authorized_keys
RUN chown remote_user:remote_user   -R /home/remote_user && \
    chmod 400 /home/remote_user/.ssh/authorized_keys
RUN ssh-keygen -A
EXPOSE 22
RUN rm -rf /run/nologin
CMD /usr/sbin/sshd -D

如何以用户身份(此处为 remote_user)通过 ssh 进入我的容器?

尤里

当您通过 SSH 连接到您的盒子时,会生成一个 shell。这是哪个 shell,/etc/passwd在 Docker 映像的文件定义我怀疑它列出/bin/sh而不是/bin/bash.

您的 Dockerfile 列出了在您的映像中创建新用户的命令。这个命令是useradd,那是将/etc/passwd在你的 Docker 镜像中改变的命令尝试使用useradd --shell /bin/bash remote_user而不是useradd remote_user. 然后重建您的 Docker 映像,并从该映像创建一个新容器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档