docker教程中有一个直接切入容器的示例。
Dockerize SSH服务| Docker文档
概述
我没有做任何特别的事情。
它不是类似于docker的解决方案,而是类似于服务器的解决方案。
简而言之,您可以编写从设置服务器到在Dockerfile中启用ssh连接的过程。
Dockefile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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"] |
Dockerfile的说明
安装SSH服务器
1 | RUN apt-get update && apt-get install -y openssh-server |
没有服务器就无法建立ssh连接。
为ssh
创建目录
如果没有该目录,sshd似乎无法工作。
1 | RUN mkdir /var/run/sshd |
设置root用户
的密码
使用
在此示例中,
1 | RUN echo 'root:screencast' | chpasswd |
允许密码以root用户身份登录
通过强制重写sshd_config文件来更改设置。
1 | RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config |
根据OpenSSH的版本,默认设置通常禁止您使用密码直接登录到root。
已发布" OpenSSH 7.0",将进行安全性增强,例如更改PermitRootLogin设置| SourceForge杂志
魔法
由于正则表达式很难阅读,但是我正在重写
如您在注释中看到的那样,如果您不写此内容,则会在登录后被踢。
1 2 | # 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 |
1 2 | - session required pam_loginuid.so + session optional pam_loginuid.so |
(但是当我尝试删除此行时,我能够登录到ssh而没有任何问题)
ubuntu-为什么需要使用docker将
传递环境变量的示例
本教程只是一个示例,似乎没有任何意义。 (即使您删除了这两行,也可以使用)
1 2 | ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile |
- bash-为什么在/ etc / profile中设置VISIBLE = NOW?--Stack Overflow
暴露端口22
1 | EXPOSE 22 |
启动ssh服务器
您必须先启动ssh才能使用它。
1 | CMD ["/usr/sbin/sshd", "-D"] |
参考
- 通过ubuntu 11.04 xinetd启动shshd(更改设置):豆腐和魔芋
- PAM的角色| OpenGroove