![为什么当我通过 SSH 进入 docker 容器时,提示符中显示的是 `$` 而不是 `user@hostname:~$`?我是否以用户身份登录?](https://linux22.com/image/1175514/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%BD%93%E6%88%91%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9B%E5%85%A5%20docker%20%E5%AE%B9%E5%99%A8%E6%97%B6%EF%BC%8C%E6%8F%90%E7%A4%BA%E7%AC%A6%E4%B8%AD%E6%98%BE%E7%A4%BA%E7%9A%84%E6%98%AF%20%60%24%60%20%E8%80%8C%E4%B8%8D%E6%98%AF%20%60user%40hostname%3A~%24%60%EF%BC%9F%E6%88%91%E6%98%AF%E5%90%A6%E4%BB%A5%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E7%99%BB%E5%BD%95%EF%BC%9F.png)
我正在尝试通过 ssh 进入我的 Ubuntu docker 容器。但是当我尝试时,它并没有以我的用户身份进入,而是进入某个 DOS 终端。
但是当我使用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 镜像,并从该镜像创建一个新容器。