我正在尝试创建一个 docker 容器来 ssh 进入,以便在 Ubuntu 20.04 上进行单元测试。使用下面的 DockerFile:
# Use a base image with the desired OS (e.g., Ubuntu, Debian, etc.)
FROM ubuntu:latest
# Install SSH server
RUN apt-get update && \
apt-get upgrade -y
RUN apt-get install openssh-server -y supervisor
RUN apt-get install nano
# Create an SSH user
RUN useradd -rm -d /home/sshuser -s /bin/bash -g root -G sudo -u 1000 sshuser
# Set the SSH user's password (replace "password" with your desired password)
RUN echo 'sshuser:password'
# Allow SSH access
RUN mkdir /var/run/sshd
RUN /usr/bin/ssh-keygen -A
# Expose the SSH port
EXPOSE 22
# Start SSH server on container startup
CMD ["/usr/sbin/sshd", "-D"]
和
设置
docker build -t ssh_server .
docker run -d -p 22:22 ssh_server
运行时
ssh sshuser@localhost
系统会提示我输入密码。但每当我输入正确的密码时,我都会收到Permission denied, please try again.
错误。有趣的是,这在 Windows 上运行没有问题。
完整日志:
(base) joe@Ubuntu:~/git-repos/datashuttle/tests/ssh_test_images$ docker build -t ssh_server .
[+] Building 1.4s (12/12) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 651B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:latest 1.2s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/8] FROM docker.io/library/ubuntu:latest@sha256:1b8d8ff4777f36f19bf 0.0s
=> CACHED [2/8] RUN apt-get update && apt-get upgrade -y 0.0s
=> CACHED [3/8] RUN apt-get install openssh-server -y supervisor 0.0s
=> CACHED [4/8] RUN apt-get install nano 0.0s
=> CACHED [5/8] RUN useradd -rm -d /home/sshuser -s /bin/bash -g root -G 0.0s
=> CACHED [6/8] RUN echo 'sshuser:password' 0.0s
=> CACHED [7/8] RUN mkdir /var/run/sshd 0.0s
=> CACHED [8/8] RUN /usr/bin/ssh-keygen -A 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:cc8b8b9f8a500fb399ae7ef2ea7ef0a667706dde81330 0.0s
=> => naming to docker.io/library/ssh_server 0.0s
(base) joe@Ubuntu:~/git-repos/datashuttle/tests/ssh_test_images$ docker run -d -p 22:22 ssh_server
cf70b859e7c1889d32f0e866697c6d273fb6bde27bb5d9f80de0ae546f5cc6dd
(base) joe@Ubuntu:~/git-repos/datashuttle/tests/ssh_test_images$ ssh sshuser@localhost
sshuser@localhost's password:
Permission denied, please try again.
任何帮助将不胜感激,因为我已经用头撞墙有一段时间了。
首先要做的事情:我不知道为什么它在 Windows 上对你有效,我认为给定这个 Dockerfile 它根本不应该工作:D
这一行:
RUN echo 'sshuser:password'
除了显示文本“sshuser:password”之外不执行任何操作。
您需要设置密码,然后才能正常工作。