我正在尝试通过 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 进入我的容器?
当您通过 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] 删除。
我来说两句