为什么当我通过 SSH 进入 docker 容器时,提示符中显示的是 `$` 而不是 `user@hostname:~$`?我是否以用户身份登录?

为什么当我通过 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 进入我的容器?

答案1

/etc/passwd当您通过 SSH 进入您的机器时,会生成一个 shell。这是哪个 shell,已在 Docker 映像中的文件中定义。我怀疑它列出了/bin/sh而不是/bin/bash

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

相关内容