服务器上FTP用户名密码没有统一可见位置,要看你的FTP服务端跑在什么系统、用什么软件:Windows IIS的密码存放在加密的applicationHost.config里,用户账户密码在SAM数据库中无法直接读出明文;Linux的vsftpd、ProFTPD则分别可在配置文件和虚拟用户认证库中定位,但密码同样多以哈希或加密形式存在。
Windows服务器:IIS FTP的用户名密码藏在哪
Windows服务器IIS下FTP密码怎么找回
这是Windows环境中问得最多的问题,IIS自带的FTP服务并不是把用户名密码写在某个txt文件里,系统数据库才是真正存放账户信息的地方。
站点配置存放位置
- 全局配置文件路径:
C:\Windows\System32\inetsrv\config\applicationHost.config - 站点级配置文件:
C:\inetpub\ftproot\站点目录下的web.config - 打开applicationHost.config查找
<ftpServer>节点,能看到FTP用户授权列表和权限设置,但登录密码字段通常显示为加密字符串,无法直接还原成明文
用户账户密码的真实位置
IIS FTP默认校验的是Windows本地用户或域用户,所有本地账户的密码经过哈希后存在SAM数据库中,这个文件在系统运行时被锁定,任何工具都无法直接把哈希反解成原始密码。
业内专家指出,从安全设计角度看,Windows对本地账户密码采取单向哈希处理,这本身就是防止明文泄露的机制。
实操建议
- 查看配置文件:用记事本或PowerShell执行
Get-Content C:\Windows\System32\inetsrv\config\applicationHost.config | Select-String "ftp" - 确认FTP账号属于哪个本地用户:服务器管理器 → 本地用户和组
- 密码遗忘时,管理员直接重置:
net user 用户名 新密码,无需找回原密码;重置后记得同步客户端凭据 - 若配置文件中含有IIS加密后的凭据节点,可在IIS管理器中打开FTP授权规则重新设置密码,也可以用
appcmd命令导出配置再查看
需要提醒的是,直接复制applicationHost.config到其他机器解密往往行不通,加密密钥与当前机器绑定。
通过PowerShell和命令行定位FTP账户配置
在Windows服务器上,命令行是最快的排查入口:
- 列出FTP站点:
%windir%\system32\inetsrv\appcmd list site - 查看FTP授权配置:
appcmd list config /section:system.ftpServer/security/authorization - 查看FTP用户隔离设置:
appcmd list config /section:system.ftpServer/userIsolation
这些命令输出的是谁有权限登录FTP、权限多大,但密码本身不会以明文呈现,若管理员想核对账号是否存在,可在本地用户和组中确认,密码只能重置不能查看,这是Windows的既定规则。
Linux服务器:vsftpd与ProFTPD配置文件查看位置
Linux服务器vsftpd配置文件查看FTP密码的位置
Linux环境更“透明”,配置文件和认证文件都可以直接打开,但是否能看到明文取决于认证方式。
常见路径清单
- 主配置文件:
/etc/vsftpd/vsftpd.conf或/etc/vsftpd.conf - 虚拟用户认证文件:
/etc/vsftpd/virtual_users.txt(明文,部分部署方式使用) - 虚拟用户数据库:
/etc/vsftpd/virtual_users.db(由db_load生成,二进制格式,需用db_dump工具转出) - PAM认证配置:
/etc/pam.d/vsftpd
实操步骤
- 查看是否启用虚拟用户:
grep virtual_use_local_privs /etc/vsftpd/vsftpd.conf - 若配置了
pam_userdb认证,执行db_dump -p /etc/vsftpd/virtual_users.db转储,即可看到用户名和对应密码 - 若走PAM系统账户认证,密码存在
/etc/shadow,字段为哈希值,执行cat /etc/shadow | grep ftp用户名只能看到加密串 - 找回明文密码不可行,正确做法是用
passwd 用户名或htpasswd重新设置
行业共识认为,Linux系统中的sha512-crypt、bcrypt等哈希算法同样是不可逆的,被设计成即使拿到文件也无法还原原始密码。
ProFTPD与Pure-FTPd的账户密码排查方式
- ProFTPD:配置文件通常在
/etc/proftpd/proftpd.conf或/usr/local/etc/proftpd.conf,若使用AuthUserFile指向认证文件,该文件可用ftpasswd工具生成和管理,查看用户列表可直接编辑 - Pure-FTPd:虚拟用户存放在
/etc/pure-ftpd/pureftpd.passwd,密码为加密形式,可用pure-pw show 用户名查看账户详情,重置用pure-pw passwd 用户名
无论哪种服务端,管理员真正能拿到的是“账户是否存在、权限如何”,明文密码一律不可恢复,发现了明文密码的配置文件,反而说明部署方式存在安全隐患。
FTP账号密码忘了怎么通过命令行找回
当手头没有现成记录,又需要定位FTP凭据,按这个顺序走:
- 第一步:确认FTP服务是什么,Windows用
appcmd list site,Linux用systemctl status vsftpd或ps aux | grep ftp - 第二步:找配置文件,Windows看applicationHost.config,Linux看
/etc下对应软件的conf文件 - 第三步:判断认证模式,系统账户走PAM或SAM,虚拟用户走独立认证库
- 第四步:定位存储载体,明文文件可直接读,哈希文件仅能确认账号,无法反解
- 第五步:需要登录时,修改密码后同步客户端配置
注意:服务器上能查到的是服务端账户信息,和FTP客户端里保存的密码是两回事,客户端一侧的登录记录保存在本地工具中,比如FileZilla的站点管理器,位置在 %APPDATA%\FileZilla\sitemanager.xml(Windows)或 ~/.config/filezilla/sitemanager.xml(Linux),这个文件中的密码经过可逆编码,是少数能真正“查看”到原密码的场景。
云服务器(如简米云/酷番云)上FTP密码查看的路径差异
云主机的系统层与物理机没有区别,路径同样遵循上面Windows和Linux的规则,差别在于云平台控制台提供了另一层账户体系。
- 云服务器控制台的重置密码功能,针对的是系统登录账户(root/Administrator),不是FTP虚拟用户
- 如果FTP账号是宝塔面板创建的,登录面板 → FTP管理 → 对应账户,密码在面板数据库中加密保存,面板界面通常不提供明文查看,只能重置
- 自建FTP服务端时,优先检查
/www/server/pure-ftpd/etc/pureftpd.passwd(宝塔常见路径)或对应软件配置目录
据工信部发布的网络安全相关指导文件,服务器账户口令应采用加密存储、定期更换的策略,从制度层面也说明平台方不会提供明文密码查看入口。
FTP密码查看的安全边界
能查到明文密码的部署方式,往往意味着风险,以下几种情况要特别留意:
- 虚拟用户密码文件权限应为600,属主为root,避免普通用户读取
- 配置文件不要明文写密码,可用环境变量或密钥管理服务替代
- Windows IIS的配置加密节点不要随意导出到共享目录
- 查看操作本身应留痕,多人运维环境建议使用堡垒机
在服务器上查FTP用户名密码,本质是两件事:一是确认账户存在与权限配置,二是通过合法手段重置密码,明文密码只有在虚拟用户明文库或客户端保存记录中才能见到,系统账户密码一律不可逆。
Q&A:FTP用户名密码查看常见问题
服务器上的FTP密码是加密的,还能还原成明文吗?
不能,Windows的SAM、Linux的shadow以及各类虚拟用户数据库使用的都是单向哈希算法,设计目标就是不可逆,能做的只有确认账户是否存在、重置一个新密码,或者从客户端保存记录里查看当时输入的密码。
为什么服务器上能看到FTP用户名却看不到密码?
用户名是账户标识,需要明文存储用于登录比对;密码经过哈希后只用于校验,系统不需要知道原始值,这是账户体系的基本设计,Windows、Linux和主流FTP服务端都遵循同一原则。
宝塔面板和云服务器控制台能直接查看FTP密码吗?
宝塔面板的FTP管理界面提供密码重置功能,不提供明文回显;云服务器控制台的重置密码针对系统账户,与FTP虚拟用户是两套体系,需要恢复访问时,统一走重置流程,再把新密码同步到FTP客户端。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/787642.html


