由于百度查找的各种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安装vsftpd服务的过程,包括新建ftp存储目录,创建FTP用户,以及在Docker中运行容器。在实际操作中遇到了软件无法连接FTP、425 Security:Bad IP连接错误和从服务器端FTP上传文件失败等问题。通过调整安全组规则,禁用FTP的IP安全检查,并修改FTP配置,最终解决了这些问题。

4705

被折叠的 条评论
为什么被折叠?



