docker - 由于发生权限被拒绝,无法 ssh 到 docker(ubuntu:19.04)
问题描述
我从这个 Dockerfile 制作了 ssh 服务 docker。
FROM ubuntu:19.04
RUN apt-get update && apt-get install -y openssh-server \
postgresql-client \
language-pack-ja
RUN update-locale LANG=ja_JP.UTF-8
RUN mkdir /var/run/sshd
ARG ROOT_PASSWORD
RUN echo root:${ROOT_PASSWORD} | 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"]
我关注了这个页面。
https://docs.docker.com/engine/examples/running_ssh_service/
不同的是,仅将 ubuntu 映像版本更改为 19.04。
但是,我无法 ssh 发生许可被拒绝。
docker build --build-arg ROOT_PASSWORD=$ROOT_PASSWORD -t eg_sshd .
docker run -d -P --name test_sshd eg_sshd
docker port test_sshd 22
0.0.0.0:32770
ssh root@localhost -p 32770
root@localhost's password:
Permission denied, please try again.
为什么会发生权限被拒绝?
解决方案
PermitRootLogin 行在 16.04 时没有注释掉,但是在 18.04 时注释掉了,所以我将它设置为#\?
以适应两者。
它可以从以下 Dockerfile 执行。
FROM ubuntu:19.10
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:root' | 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"]
推荐阅读
- spring-boot - Spring Boot 与 JBPM 7.23.0 的集成
- product - 如何用 Microdata 表明 Schema.org 的“产品”没有全局标识符?
- php - 解析 PDF 并获取页眉部分信息
- python - 使用多线程使块的执行超时
- android - 在 Activity 启动之前设置 UI 元素的颜色
- ruby-on-rails - Rails Capistrano 在资产上失败:预编译 SSHKIT
- python - 我的函数只返回列表中的最后一项
- node.js - 值未在 MongoDB 中更新
- spring-boot - 无法检索请求的元数据 /latest/meta-data/public-hostname
- shell - 我怎样才能写出for循环