Syncthing Web界面需设密码保护以防止未授权访问,操作包括:一、GUI中启用身份验证并设置用户名密码;二、手动编辑config.xml添加user/password字段;三、启用HTTPS加密通信;四、限制GUI监听地址至特定IP或子网;五、配置HTTP基础认证并禁用匿名访问。

如果您已成功运行 Syncthing 并能通过浏览器访问本地 Web 管理界面(http://127.0.0.1:8384),但尚未启用身份验证,则该界面当前处于无密码开放状态,任何能访问该地址的用户均可修改配置或查看同步状态。以下是为 Syncthing Web 界面设置密码保护的具体操作步骤:
一、通过 Web 界面直接配置用户名与密码
此方法无需手动编辑 XML 文件,适用于首次配置或 GUI 可正常访问的场景,操作直观且实时生效。
1、在浏览器中打开 Syncthing Web 管理界面:http://127.0.0.1:8384
2、点击右上角“操作” → “设置”
3、切换至“GUI”选项卡
4、勾选“启用图形界面身份验证”
5、在“用户名”栏输入自定义账户名(如 admin)
6、在“密码”栏输入强密码(至少8位,含大小写字母与数字)
7、点击“保存”,Syncthing 将自动重启 GUI 服务
8、关闭当前页面,重新访问 http://127.0.0.1:8384,此时将弹出登录框要求输入刚设置的用户名和密码
二、手动编辑 config.xml 配置文件
当 Web 界面无法加载、设置按钮不可用或需批量部署时,可直接修改底层配置文件。此方式绕过 GUI,适用于所有运行状态,且密码字段将在下次启动时自动哈希加密。
1、确保 Syncthing 已至少运行过一次,以生成初始配置文件
2、定位配置文件路径:C:\Users\<用户名>\AppData\Local\Syncthing\config.xml
3、使用记事本或 VS Code 等纯文本编辑器以管理员权限打开该文件
4、查找 <gui> 节点(通常位于文件中部)
5、在 <gui> 和 </gui> 之间插入以下两行(注意缩进对齐):
<user>admin</user>
<password>your_secure_password</password>
6、保存文件并关闭编辑器
7、重启 Syncthing 进程(关闭后双击 syncthing.exe 重新运行)
8、再次访问 http://127.0.0.1:8384,浏览器将提示输入HTTP 基础认证凭据
三、强制启用 HTTPS 加密连接(增强传输安全)
仅设置登录密码不足以防止密码在网络中明文传输。启用 HTTPS 可对浏览器与 Syncthing 之间的通信全程加密,抵御中间人窃听。
1、确认 Syncthing 版本 ≥ v1.27.0(推荐使用 v2.0.10 或更高版本)
2、在 Web 界面“设置 → GUI”中,勾选“使用加密连接到图形管理页面(HTTPS)”
3、点击“保存”,Syncthing 将自动生成自签名证书并监听 https://127.0.0.1:8384
4、首次访问 HTTPS 地址时,浏览器会显示安全警告;点击“高级” → “继续前往127.0.0.1(不安全)”
5、后续登录框将通过 TLS 加密通道提交凭证,用户名与密码不再以明文形式在网络中传输
6、若需消除浏览器警告,可导出 Syncthing 生成的证书(位于 config.xml 同级目录下的 certs/ 子目录),并手动导入系统信任根证书库
四、限制 Web 管理界面可访问来源
即使设置了密码,若 Web 界面绑定在 0.0.0.0(即全网段监听),仍存在被扫描发现并遭受暴力破解的风险。限制监听地址是纵深防御的关键一环。
1、编辑 config.xml 文件,定位 <address> 标签(在 <gui> 节点内)
2、将原值 127.0.0.1:8384 改为仅允许特定局域网 IP 访问,例如:192.168.1.100:8384
3、若需允许多个固定 IP,可配置为 192.168.1.0/24:8384(需 Syncthing ≥ v1.28.0)
4、保存文件并重启 Syncthing
5、验证:仅来自指定子网的设备可访问 http://192.168.1.100:8384,其他地址将连接拒绝
6、配合 Windows 防火墙规则,进一步屏蔽非授权 IP 对 8384 端口的 TCP 请求
五、启用 HTTP 基础认证并禁用匿名访问
部分旧版 Syncthing 允许未登录状态下查看设备状态与同步概览,这可能导致敏感信息泄露。强制所有请求均需基础认证可彻底关闭匿名入口。
1、打开 config.xml,确认 <gui> 节点内已包含 <user> 与 <password> 字段
2、在 <gui> 节点内添加以下子节点:
<authType>basic</authType>
3、确保 <apikey> 字段未被注释且值为有效字符串(如保留默认生成值)
4、删除或注释掉任何形如 <noAuth>true</noAuth> 的配置项
5、保存并重启 Syncthing
6、此时所有 HTTP 请求(包括 GET /rest/system/status)均返回 401 Unauthorized,除非携带合法 Authorization: Basic 头

















