docker使用笔记V -- FTP 与 SSH 支持

2022-12-28 10:55:54 浏览数 (1)

给容器赋予FTP和ssh登录在调试和使用阶段都是很不错的功能!下面看老高怎么实现的。

(基于ubuntu:xenial)

FTP

参考README.Configuration-File 和 Documentation for version 1.0.42

代码语言:javascript复制
FROM ubuntu:xenial

RUN sed -i "s/archive.ubuntu.com/mirrors.ustc.edu.cn/g" /etc/apt/sources.list
RUN apt-get update 
    && apt-get install -y wget build-essential 
    && rm -rf /var/lib/apt/lists/*

RUN wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.42.tar.gz
RUN tar -xzf pure-ftpd-1.0.42.tar.gz
RUN cd /pure-ftpd-1.0.42; ./configure --with-everything --with-privsep --without-capabilities
RUN cd /pure-ftpd-1.0.42; make; make install

# 虚拟用户
RUN (echo 'laogao'; echo 'laogao') | pure-pw useradd www -u root -d /home/www
pure-pw mkdb

# 系统用户
RUN echo root:laogao |chpasswd


CMD ["/usr/local/sbin/pure-ftpd -p 40000:40009 -A -b -B -C 20 -D -E -H -j -4 -lpuredb:/etc/pureftpd.pdb"]

测试命令:

代码语言:javascript复制
ftp 127.0.0.1
root
laogao

SSH

代码语言:javascript复制
FROM ubuntu:xenial

RUN sed -i "s/archive.ubuntu.com/mirrors.ustc.edu.cn/g" /etc/apt/sources.list
RUN apt-get update 
    && apt-get install -y openssh-server 
    && rm -rf /var/lib/apt/lists/*

#ssh
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
RUN sed -i 's/Port 22/Port 22222/' /etc/ssh/sshd_config
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

EXPOSE 22222

CMD ["/usr/sbin/sshd", "-D"]

测试命令

代码语言:javascript复制
ssh root@127.0.0.1 -p 22222
screencast

小贴士

你的服务器可能需要运行着防火墙,下面的命令可以帮你开启端口:

代码语言:javascript复制
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-port=20-21/tcp
firewall-cmd --permanent --add-port=20000-20009/tcp

firewall-cmd --reload

Renference:

Dockerizing an SSH daemon service

0 人点赞