FileZilla在Linux中以Base64编码明文存储密码,存在严重安全风险;应禁用密码保存、改用SSH密钥认证,或限制文件权限、集成GNOME密钥环、手动清除历史凭据。

如果您在Linux(包括Debian、Ubuntu等发行版)中使用FileZilla客户端并启用了“保存密码”功能,则该密码将以明文形式存储在本地配置文件中,不经过加密处理。以下是针对此安全风险的多种应对与缓解方法:
一、理解FileZilla密码存储机制
FileZilla客户端(所有Linux版本)默认将站点连接信息(含FTP/FTPS/SFTP用户名与密码)保存在~/.config/filezilla/sitemanager.xml和~/.config/filezilla/recentservers.xml两个XML文件中。这些文件中的<Pass>标签内容为未经任何加密的明文密码,仅经Base64编码——该编码可被任意工具瞬间还原,不具备保密性。
二、禁用密码保存并改用SSH密钥认证(推荐)
该方法彻底规避明文密码存储问题,适用于SFTP协议连接,依赖系统级SSH密钥体系,安全性远高于密码认证。
1、在终端执行ssh-keygen -t ed25519 -C "your_email@example.com"生成密钥对,私钥默认保存于~/.ssh/id_ed25519,权限自动设为600。
2、将公钥内容(cat ~/.ssh/id_ed25519.pub输出)追加至远程SFTP服务器的~/.ssh/authorized_keys文件中。
3、在FileZilla中新建站点,协议选择SFTP - SSH File Transfer Protocol,主机填写服务器IP,端口保持22,用户填写远程用户名,密码栏留空。
4、点击“高级”选项卡,在“身份验证”下拉菜单中选择“使用已知的密钥文件”,浏览并指定~/.ssh/id_ed25519私钥路径。
5、保存站点后,连接时不再提示输入密码,也无需存储任何密码字段。
三、限制配置文件访问权限并隔离存储位置
通过操作系统级文件权限控制,防止非授权用户读取sitemanager.xml,属于纵深防御措施,无法消除明文本质,但可显著提升攻击门槛。
1、确认FileZilla已退出运行,避免配置文件被锁定或覆盖。
2、执行命令chmod 600 ~/.config/filezilla/sitemanager.xml,确保仅当前用户可读写。
3、执行命令chmod 700 ~/.config/filezilla/,禁止其他用户进入该目录。
4、(可选)将整个~/.config/filezilla/目录挂载为tmpfs内存文件系统,重启后自动清空:编辑/etc/fstab添加行tmpfs /home/username/.config/filezilla tmpfs defaults,size=10M,uid=username,gid=username,mode=0700 0 0,然后运行sudo mount -a。
四、使用外部密码管理器替代内置存储
借助系统级密钥环(如GNOME Keyring或KWallet)托管凭据,由桌面环境统一加密保护,FileZilla本身不接触明文密码。
1、安装filezilla-common及对应密钥环后端(如GNOME环境下安装gnome-keyring)。
2、启动GNOME Keyring守护进程:gnome-keyring-daemon --start --components=secrets,并确保环境变量SSH_AUTH_SOCK和GPG_AGENT_INFO已设置。
3、在FileZilla设置中打开“编辑 → 设置 → FTP → FTP回退”,勾选“使用GNOME密钥环存储密码”(若编译时启用了该支持)。
4、首次连接时,系统弹出密钥环解锁窗口,输入登录密码后,凭据将以加密形式存入密钥环数据库,后续连接自动调用。
五、手动清除已保存密码并禁用自动保存
对已存在明文密码的用户,应立即清除历史记录,并永久关闭自动保存功能,防止新增敏感数据落盘。
1、关闭FileZilla客户端。
2、执行rm -f ~/.config/filezilla/sitemanager.xml与rm -f ~/.config/filezilla/recentservers.xml,彻底删除所有站点与最近服务器记录。
3、重新启动FileZilla,进入“编辑 → 设置 → FTP → 密码管理”,取消勾选“保存密码”和“记住未知服务器的密码”两项。
4、在“编辑 → 设置 → 通用”中,勾选“退出时清除所有密码”,确保每次会话结束均不留痕。

















