Hi!请登陆

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

2020-10-31 73 10/31

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

(基于ubuntu:xenial)

FTP

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

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"]

测试命令:

ftp 127.0.0.1
root
laogao

SSH

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 '[email protected]\s*required\s*[email protected] optional [email protected]' -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"]

测试命令

ssh [email protected] -p 22222
screencast

小贴士

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

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

相关推荐