我正在尝试通过 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 镜像,并从该镜像创建一个新容器。