vsftp-docker安装配置-虚拟用户-100%成功,亲测
主机部署参考教程: https://blog.csdn.net/qq_29644709/article/details/109526662
在我的阿里云上搭建-docker-vsftpd-虚拟用户-独立目录 :(docker搭建vsftpd,相对简单些,创建与删除都快速)
docker搭建vsftpd参考教程:
https://www.niwoxuexi.com/blog/hangge/article/903.html#
本次使用的docker images : fauria/vsftpd
因为是云服务器,或者你的网络是处于nat网络中
配置时,尽量使用公网地址 (公网114.55.87.169)(私网172.18.53.157) ftp 114.55.87.169,不然会报错:登录、查看等超时(time out)
说明下:ftp服务器的root用户,不是linux系统的root用户,尽量不要配置root用户
ftp服务器的默认主目录是你当前登录ftp时的用户主目录“/”,但不是linux系统的“/”
上传时,要么,就不写服务器的路径,自动放到你登录ftp时的用户主目录里,
我直接 关闭了selinux和firewalld
生产环境,尽量都配置上要使用的端口
==搭建开始===passive被动模式==================================================
docker run -d -v /app/dockerdir/vsftpd/:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=admin -e FTP_PASS=admin \
-e PASV_ADDRESS=114.55.87.169 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd-yr --restart=always fauria/vsftpd
==搭建完成==单个用户=========================================================
给vsftpd容器添加用户yr,一般来说一个用户一个目录,增加用户,要手动配置,还要重启vsftpd容器,要不就搞个脚本吧(本人没弄脚本 )
docker exec -i -t vsftpd bash
mkdir /home/vsftpd/yr
echo -e "yr\yr" >> /etc/vsftpd/virtual_users.txt
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
exit
docker restart vsftpd
==搭建完成==添加多个用户=======================================================
==以下是从linux系统上登录ftp的报错===本人亲测========================================
--error--vsftp: connect: Connection timed out
在创建ftp时,直接使用服务器的公网地址
--error--425 Security: Bad IP connecting
VSftpd连接错误425 Security: Bad IP connecting解决方法,故障分析:FTP客户端软件连接VSftpd服务报此错误,大概原因是在连接中变换了IP地址。
解决方法:
# vi /etc/vsftpd/vsftpd.conf
添加:pasv_promiscuous=YES
保存退出
# service vsftpd restart
pasv_promiscuous选项参数说明:
此选项激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO。
合理的用法是:在一些安全隧道配置环境下,或者更好地支持FXP时(才启用它)。
--error--vsftp上传553 Could not create file
说明下:ftp服务器的root用户,不是linux系统的root用户,尽量不要配置root用户
ftp服务器的默认主目录是你当前登录ftp时的用户主目录“/”,但不是linux系统的“/”
上传时,要么,就不写服务器的路径,自动放到你登录ftp时的用户主目录里,
put xxxxx
要么,跟ftp用户的全路径/文件名,要写全,不然还是要报错
--以下为实例--
ftp> put iptable_shell.tar.gz /
local: iptable_shell.tar.gz remote: /
227 Entering Passive Mode (114,55,87,169,82,112).
553 Could not create file.
ftp> put iptable_shell.tar.gz
local: iptable_shell.tar.gz remote: iptable_shell.tar.gz
227 Entering Passive Mode (114,55,87,169,82,111).
150 Ok to send data.
226 Transfer complete.
10240 bytes sent in 4.6e-05 secs (222608.69 Kbytes/sec)
ftp> put iptable_shell.tar.gz /ip
local: iptable_shell.tar.gz remote: /ip
227 Entering Passive Mode (114,55,87,169,82,110).
150 Ok to send data.
226 Transfer complete.
10240 bytes sent in 4.1e-05 secs (249756.10 Kbytes/sec)
--以上实例--
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构