我的回答将严格从系统管理员、网络安全工程师或所有者的合法授权角度出发,介绍在拥有合法权限的情况下,如何找回、重置或发现FTP密码。请勿将以下任何技术用于非法目的。

核心原则:安全第一
FTP协议本身是不安全的,因为它以明文形式传输用户名和密码,这意味着任何在网络上进行嗅探(监听)的人都可能轻易截获你的凭据,最佳实践是避免使用FTP,转而使用更安全的协议,如:
- SFTP (SSH File Transfer Protocol):通过SSH隧道运行,加密所有传输内容。
- FTPS (FTP Secure):FTP over SSL/TLS,对控制和数据通道进行加密。
合法获取FTP密码的方法
假设你是服务器的管理员,或者你忘记了你自己设置的密码,可以尝试以下方法:
直接从服务器配置文件中查找(最常见)
大多数FTP服务器(如 vsftpd, ProFTPD, FileZilla Server)都会将用户凭据存储在配置文件或用户数据库中。
对于 Linux/Unix 系统和 vsftpd (Very Secure FTP Daemon):

-
检查用户密码文件:如果FTP用户是系统用户,他们的密码通常存储在
/etc/shadow文件中,普通用户无法直接查看,需要root权限。# 需要 root 权限 sudo cat /etc/shadow | grep ftp_username
你会看到一串加密的哈希值,但无法直接“找到”明文密码,如果你忘记了密码,你需要重置它(见方法三)。
-
检查虚拟用户配置:如果使用虚拟用户(更安全、更推荐),用户名和密码会存储在特定的文件中,通常是
db数据库文件。-
查找配置文件:在
vsftpd.conf中找到user_config_dir或pam_password_file等配置项,指向用户数据库。
(图片来源网络,侵删) -
查找明文或可解密文件:有些旧的配置可能将密码以明文或可逆加密的方式存储在文本文件中(
/etc/vsftpd/ftp_users.txt),这是非常不安全的做法。# 搜索可能的配置文件 sudo find /etc -name "*ftp*" -type f sudo grep -r "password" /etc/vsftpd/
-
使用
db_load查看数据库:如果密码存储在db文件中(如ftpusers.db),你可以使用db_dump工具查看其内容。# 需要 db-utils 包 sudo apt-get install db-util # Debian/Ubuntu # sudo yum install db4-utils # CentOS/RHEL # 查看数据库文件内容 sudo db_dump -p /path/to/your/user.db
输出可能包含 Base64 编码的密码,有时可以直接解码。
-
对于 Windows 系统和 FileZilla Server:
- 检查 FileZilla Server.xml:FileZilla Server 的配置信息存储在
FileZilla Server.xml文件中(通常位于C:\Program Files (x86)\FileZilla Server\)。 - 使用编辑器打开:用记事本或 XML 编辑器打开该文件。
- 搜索
<User>:找到你想要查看的用户。 - 查看
<Pass>:你会看到密码的哈希值。同样,你无法直接得到明文密码。<User Name="myuser"> <Pass>1234567890abcdef1234567890abcdef</Pass> <!-- 其他配置... --> </User>这个哈希是 FileZilla 自定义的,无法轻易破解,你需要重置密码。
使用网络嗅探器(在合法授权下进行)
如果你怀疑有人正在使用一个你不知道的密码连接FTP服务器,并且你拥有该网络的合法监控权限,你可以使用嗅探工具捕获登录过程中的流量。
- 工具:Wireshark 是最强大的网络协议分析工具。
- 操作步骤:
- 在服务器或网络交换机上配置端口镜像,将FTP流量复制到运行Wireshark的机器上。
- 启动 Wireshark,选择正确的网络接口。
- 设置显示过滤器:
ftp - 开始捕获数据包。
- 观察客户端连接到服务器的过程,在
USER和PASS命令中,你会看到明文的用户名和密码。168.1.100 -> 192.168.1.10: ftp request: USER someuser 192.168.1.100 -> 192.168.1.10: ftp request: PASS cleartext_password
- 警告:这种方法只能在你拥有100%合法授权的网络环境中使用,否则就是非法窃听。
重置密码(最推荐、最合法的“找回”方式)
当你是合法所有者或管理员时,忘记密码最直接、最安全的解决方法是重置它。
-
对于系统用户:
- 以
root或sudo用户登录服务器。 - 使用
passwd命令重置该用户的密码。sudo passwd ftp_username
- 按照提示输入两次新密码。
- 以
-
对于虚拟用户 (vsftpd):
- 找到存储用户名和密码的文本文件(
ftp_users.txt)。 - 编辑该文件,修改或重置对应用户的密码。
# ftp_users.txt username1 new_password1 username2 new_password2 - 重新生成数据库文件。
db_load -T -t hash -f /etc/vsftpd/ftp_users.txt /etc/vsftpd/ftpusers.db
- 重启 vsftpd 服务。
sudo systemctl restart vsftpd
- 找到存储用户名和密码的文本文件(
-
对于 FileZilla Server 用户:
- 打开 FileZilla Server 管理界面。
- 在左侧用户列表中,右键点击用户,选择“修改密码”。
- 输入新密码并保存。
- 服务器通常会自动应用新设置,或者你可能需要重启服务器。
如何防止FTP密码泄露(安全建议)
如果你是管理员,请务必采取以下措施保护你的FTP服务:
- 淘汰FTP,使用SFTP/FTPS:这是最重要的一步,SFTP基于SSH,是Linux/Unix系统的标准,安全可靠。
- 使用强密码:确保所有FTP用户都使用包含大小写字母、数字和特殊符号的长密码。
- 限制登录尝试:在FTP服务器配置中设置最大尝试次数,防止暴力破解。
- 更改默认端口:将FTP服务从默认的21端口改为一个不常用的端口,可以避免大量自动化扫描攻击。
- 使用防火墙:只允许特定的IP地址访问FTP服务。
- 定期更新:保持FTP服务器软件及其依赖库为最新版本,以修补已知的安全漏洞。
- 监控日志:定期检查FTP服务器的日志文件,关注可疑的登录行为。
| 场景 | 合法方法 | 注意事项 |
|---|---|---|
| 我是管理员,忘记了密码 | 重置密码 (方法三) | 这是最安全、最正确的做法。 |
| 我是管理员,想查看密码 | 查看配置文件 (方法一) | 通常只能看到哈希值,无法直接获取明文。 |
| 我是管理员,怀疑有人非法使用 | 网络嗅探 (方法二) | 必须拥有合法授权,否则违法。 |
| 我是普通用户,忘记了密码 | 联系系统管理员 | 你没有权限直接访问服务器上的密码文件。 |
再次强调:请始终在合法和道德的框架内使用这些技术知识。
