一个使用 C++17 与 Qt 6 编写的 OpenConnect 桌面客户端。界面遵循 Material Design 3 的色彩、圆角、排版和 tonal surface 层级。
- 调用系统
openconnect,支持 AnyConnect、GlobalProtect、Pulse、Fortinet、F5 和 Array 等协议 - 紧凑的 430×620 圆角连接窗口,启动时只显示预设选择、状态和连接操作
- 多 VPN 预设管理;新增或设置时再打开完整配置窗口
- 可将密码保存到 Linux 系统密钥环并在下次连接时自动输入,密码不写入 QSettings
- 小窗口不常驻显示用户名或密码框;连接时按需弹出凭据对话框
- 可在应用设置中关闭进入托盘、连接成功和连接失败通知
- 首次连接证书指纹确认、按预设记住指纹,以及带风险提示的自动接受当前证书选项
- 密码通过标准输入传递,不进入进程参数、设置文件或应用日志
- Linux 下可通过
pkexec请求网络管理权限,也可直接启动已配置能力的openconnect - 连接状态、实时诊断日志和安全断开
- 系统托盘、关闭到托盘、连接后最小化、启动时最小化
- 客户端证书、自定义 CA、User-Agent、IPv6 开关
- Material Design 3 亮色/深色主题
- 使用矢量图标和程序绘制图标
- CMake 3.21+
- C++17 编译器
- Qt 6.4+(Widgets)
- OpenConnect
- Linux 推荐安装 PolicyKit(
pkexec)
Arch Linux:
sudo pacman -S cmake qt6-base openconnect polkitUbuntu / Debian:
sudo apt install cmake g++ qt6-base-dev openconnect policykit-1cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
./build/openconnect-gui安装到系统:
sudo cmake --install build安装打包依赖:
sudo apt install build-essential cmake qt6-base-dev dpkg-dev desktop-file-utils一键生成 DEB:
./scripts/build-deb.sh生成的安装包位于 dist/。安装方式:
sudo apt install ./dist/openconnect-gui_*.deb安装包包含应用程序、特权辅助程序、PolicyKit 策略、应用图标和桌面菜单快捷方式。可以通过 BUILD_DIR、OUTPUT_DIR 和 JOBS 环境变量调整构建目录、输出目录和并行任务数。
创建 TUN 设备、修改路由和 DNS 通常需要管理员权限。默认配置通过 pkexec 一次性启动受限的 openconnect-gui-helper,由它管理本次 OpenConnect 进程。连接时完成授权后,正常断开和退出不会再次弹出管理员验证。
安装过程同时部署 auth_admin_keep PolicyKit 动作,短时间内重新连接可以复用系统的临时授权。PolicyKit 通常只保留该授权数分钟,而不是整次登录会话;这是为了避免长期保留管理员权限。如果你已经为 openconnect 配置了 capabilities 或以其他方式提供权限,可在设置中关闭管理员授权选项。
直接从 build 目录运行时可以使用一次授权连接并且断开无需再次验证;要启用 PolicyKit 临时授权缓存,需要执行 sudo cmake --install build 安装辅助程序和策略。



