SSH 权限被拒绝(公钥、密码) - 容器 docker ubuntu 18.04
Posted
技术标签:
【中文标题】SSH 权限被拒绝(公钥、密码) - 容器 docker ubuntu 18.04【英文标题】:SSH Permission denied (publickey,password) - container docker ubuntu 18.04 【发布时间】:2021-08-10 14:31:42 【问题描述】:我在我的 Windows 10 上安装了 Docker,我正在使用我的 WSL1 来创建 dockerfile、构建和运行容器,但我无法通过 ssh 连接,我得到 Permission denied (publickey,password)强>
我的 dockerfile 是:
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
我的 docker ps 是:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b41411ef7a8a eg_sshd "/usr/sbin/sshd -D" 4 minutes ago Up 4 minutes 0.0.0.0:32768->22/tcp test_sshd
ssh 端口是这样的:
➜ root$ docker port test_sshd 22
0.0.0.0:32768
当我尝试通过 ssh 连接时,我得到 “权限被拒绝”
➜ root$ ssh root@0.0.0.0 -p 32768
root@0.0.0.0: Permission denied (publickey,password).
ssh 服务启动
➜ root$ docker exec b41411ef7a8a service ssh status
* sshd is running
我做错了什么......我不知道。
【问题讨论】:
【参考方案1】:问题出在这一行:
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
因为原行是:
#PermitRootLogin prohibit-password
所以sed
有效,但该选项仍被注释掉。毫无疑问,您知道如何解决此问题,但以防万一解决方案是将 #
添加到匹配部分:
RUN sed -Ei 's/#(PermitRootLogin).+/\1 yes/' /etc/ssh/sshd_config
顺便说一句,通常您不需要在容器中使用ssh
服务器即可进入其中。可以使用docker exec -it <container> sh
或(对于 Kubernetes)kubectl exec -it <pod_name> sh
在容器内打开 shell。
【讨论】:
以上是关于SSH 权限被拒绝(公钥、密码) - 容器 docker ubuntu 18.04的主要内容,如果未能解决你的问题,请参考以下文章
权限被拒绝(公钥、密码)。 rsync:连接意外关闭 - gitlab
通过 SSH 将 gitlab-runner(服务器)连接到虚拟机失败:权限被拒绝(公钥、密码)