记一次Docker安装vsftpd记录

由于百度查找的各种yum安装vsftpd的教程都安装配置不成功,
突然想起还有Docker这么个玩意,专制各种环境不一样,配置不一样的东东,
然后就用Docker来构建vsftpd服务;
下面记录一下安装的过程及后续遇到的各种问题:

1.新建ftp文件存储目录/home/ftp

mkdir /home/ftp

2.创建FTP用户

useradd -s /sbin/nologin -d /home/ftp/aifa -g ftp aifa && echo ai@123456@fa | passwd --stdin aifa

账号是:aifa,密码是ai@123456@fa

3.下载镜像并运行容器

docker run -d -v /home/ftp:/home/vsftpd -p 20:20 -p 21:21 -p 21100-21110:21100-21110 -e FTP_USER=aifa -e FTP_PASS=ai@123456@fa --name vsftpd --restart=always fauria/vsftpd

问题:
1.软件无法连接上FTP
问题原因:
阿里云 ESC 安全组没开放端口,导致无法连接
处理办法
需要在实例安全组的入方向添加放行下列 FTP 端口的规则。
FTP 为主动模式时:端口21。
FTP 为被动模式时:端口21,以及配置文件/etc/vsftpd/vsftpd.conf中参数pasv_min_port和pasv_max_port之间的所有端口。

Docker运行的vsftpd默认的pasv_min_port和pasv_max_port是21100-21110,所以需要放行21100/21110端口

2.失败报错: 425 Security:Bad IP connection
问题原因:
ftp 服务同时拥有两个连接,一个是控制连接,一个是数据连接。
在默认情况下,数据传输时 ftp 服务器端会核实两个连接的源 IP 是否一致,如果不一致,就会报错:425 Security:Bad IP connection
所以,该问题通常是由于客户端在 NAT 网络,而 NAT 关联的公网 IP 不止一个,导致两次连接时源 IP 不一致所致。
处理办法
关闭被动模式下的ip安全检查,配置方法如下:

vi /etc/vsftpd/vsftpd.conf
# 添加:
pasv_promiscuous=yes 
# 保存退出后重启 ftp 服务
docker restart vsftpd

3.利用FTP将客户端文件存储到服务器端时,在自己电脑正常上传成功,但是把jar包放到服务器上运行是,在调用ftpClient.storeFile方法后,总是返回false
处理办法
在百度之后,有提到说添加一行:

 ftpClient.enterLocalPassiveMode();

注意~~~~这行代码需要写在

 ftpClient.login();

登录成功后

你可能感兴趣的:(Docker)