英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
GlobalProtect-openconnect
一个面向 Linux 的现代 GlobalProtect VPN 客户端,基于 OpenConnect 构建,完全支持 SSO 认证。该项目提供命令行和图形界面,以实现无缝的 VPN 连接。
灵感来自于 gp-saml-gui
功能
- 跨平台 Linux 支持 – 针对各种 Linux 发行版进行优化
- 双接口 – 提供 CLI 和 GUI 应用程序
- 灵活的身份验证 – 支持 SSO、非 SSO、FIDO2(例如 YubiKey)和客户端证书认证
- 浏览器集成 – 使用默认浏览器或指定浏览器进行身份验证
- 多门户支持 – 连接到多个门户和网关
- 直接网关连接 – 在需要时绕过门户选择
- 自动连接 – 系统启动时自动连接
- 系统托盘集成 – 方便的系统托盘图标(在 GNOME 上需要 gnome-shell-extension-appindicator)
使用方法
命令行界面
CLI 版本是完全开源且功能丰富的,提供与 GUI 版本几乎相同的功能。
基本命令
Usage: gpclient [OPTIONS] <COMMAND>
Commands:
connect Connect to a portal server
disconnect Disconnect from the server
launch-gui Launch the GUI
hip Generate HIP report
help Print this message or the help of the given subcommand(s)
Options:
--fix-openssl Uses extended compatibility mode for OpenSSL operations to support a broader range of systems and formats.
--ignore-tls-errors Ignore the TLS errors
--log-format <LOG_FORMAT> Log output format. JSON is intended for non-interactive consumers; interactive prompts remain text. [default: text] [possible values: text, json]
-v, --verbose... Enable verbose output, -v for debug, -vv for trace
-q, --quiet... Decrease logging verbosity, -q for warnings, -qq for errors
-h, --help Print help (see more with '--help')
-V, --version Print version
提示: 使用
gpclient help <command>获取特定命令的详细信息。
外部浏览器认证
对于基于浏览器的 CLI 认证:
方法 1: 使用 sudo 并保留环境变量:
sudo gpclient connect --browser <portal>
方法二: 使用身份验证管道:
gpauth <portal> --browser 2>/dev/null | sudo gpclient connect <portal> --cookie-on-stdin
浏览器选项:
- 使用
--browser自动选择 Chrome、Firefox,然后是系统默认浏览器 - 使用
--browser default使用系统默认浏览器 - 使用
--browser <browser>指定浏览器(例如,firefox、chrome) - 在无头服务器上使用
--browser remote– 这会提供一个 URL,您可以从另一台机器访问以完成身份验证
图形用户界面
GUI 应用程序提供了用于管理 VPN 连接的直观界面。可以从应用菜单启动它,或通过终端启动:
gpclient launch-gui
[!注意]
GUI 版本是部分开源的。后台服务(gpservice)是开源的,而 GUI 封装是专有的。
安装
[!注意]
对于较旧的Linux发行版,请使用v2.3.13,而不是最新版本。它提供适用于常见发行版系列的发布资产,包括Debian/Ubuntu(
.deb)、Arch Linux / Manjaro(.pkg.tar.zst)、基于RPM的发行版如Fedora / RHEL / Rocky / AlmaLinux / CentOS(.rpm),以及通用Linux压缩包(.bin.tar.xz)。
Debian / Ubuntu
选项1:从PPA安装(推荐)
sudo add-apt-repository ppa:yuezk/globalprotect-openconnect
sudo apt-get update
sudo apt-get install globalprotect-openconnect
[!注意]
针对 Linux Mint 用户: 如果遇到 GPG 密钥错误,请手动导入密钥:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7937C393082992E5D6E4A60453FC26B43838D761
选项 2:从 DEB 包安装
从 releases 页面下载最新的 .deb 包,然后安装:
sudo apt install --fix-broken globalprotect-openconnect_*.deb
Arch Linux / Manjaro
选项 1:从 AUR 安装
软件包:globalprotect-openconnect-git
您可以使用像 yay 这样的 AUR 助手来安装它:
yay -S globalprotect-openconnect-git
选项 2:从官方 Extra 仓库安装
该软件包也可在官方 Arch Linux Extra 仓库中获得。
[!注意]
由于官方软件包不包含系统托盘支持依赖项,您需要手动安装
libappindicator:
sudo pacman -S libappindicator globalprotect-openconnect
选项 3:从软件包安装
从 releases 页面下载最新的软件包,然后安装:
sudo pacman -U globalprotect-openconnect-*.pkg.tar.zst
Fedora 38 / Rawhide
从 COPR 安装
该软件包可用于基于 RPM 的发行版,访问 COPR:
sudo dnf copr enable yuezk/globalprotect-openconnect
sudo dnf install globalprotect-openconnect
openSUSE Leap 15.6 / Tumbleweed
从 OBS (openSUSE 构建服务) 安装
软件包可在 openSUSE 构建服务 上获得。请按照您的发行版的 安装说明 操作。
其他基于 RPM 的发行版
从 RPM 包安装
从 发布 页面下载最新的 RPM 包:
sudo rpm -i globalprotect-openconnect-*.rpm
阿尔卑斯Linux
从 releases 页面下载最新的 .apk 包,然后安装:
sudo apk add --allow-untrusted globalprotect-openconnect-*.apk
该软件包使用 Alpine 的原生 musl 构建。确保启用了 community 仓库,以便可以解析 GUI 依赖项,例如 webkit2gtk-4.1、libsecret 和 libayatana-appindicator。通过 GUI 启动的连接使用 polkit,而 VPN 隧道创建需要 /dev/net/tun。
FreeBSD
从 releases 页面下载最新的 FreeBSD 软件包,然后安装:
sudo pkg install ./globalprotect-openconnect-*-freebsd-*.pkg
要从源代码构建,请参阅 在 FreeBSD 和 OpenBSD 上从源代码构建。
OpenBSD
从 releases 页面下载最新的 OpenBSD 包,然后安装:
doas pkg_add -D unsigned ./globalprotect-openconnect-*-openbsd-*.tgz
要从源代码构建,请参见 在 FreeBSD 和 OpenBSD 上从源代码构建。
健图
可通过 guru 和 lamdness 覆盖获得:
sudo eselect repository enable guru
sudo emerge --sync guru
sudo emerge --ask --verbose net-vpn/GlobalProtect-openconnect
NixOS
此存储库包含用于 NixOS 集成的 flake。
安装步骤
在你的 flake.nix 中添加 flake 输入和 NixOS 模块:
该模块使用你的 NixOS 配置中的 pkgs 构建软件包,因此 GlobalProtect GUI 和系统使用相同的 Nixpkgs 依赖版本。
{
inputs = {
# ... other inputs
globalprotect-openconnect.url = "github:yuezk/GlobalProtect-openconnect";
};
outputs = { self, nixpkgs, globalprotect-openconnect, ... }:
let
system = "x86_64-linux"; # or "aarch64-linux" for ARM64
hostname = "<your-host>";
in {
nixosConfigurations.${hostname} = nixpkgs.lib.nixosSystem {
inherit system;
modules = [
./configuration.nix
globalprotect-openconnect.nixosModules.default
{
programs.globalprotect-openconnect.enable = true;
environment.systemPackages = [
nixpkgs.legacyPackages.${system}.gnomeExtensions.appindicator
];
}
];
};
};
}
申请:
sudo nixos-rebuild switch
loginctl terminate-user "$USER"
重新登录 GNOME 后,如有需要,请启用 AppIndicator 支持:
gnome-extensions enable appindicatorsupport@rgcjonas.gmail.com
官方 Docker 镜像
官方 Docker 镜像在 Alpine Linux 上提供 CLI 工具:
docker pull yuezk/globalprotect-openconnect:<version>
发布镜像的标签为 vX.Y.Z、X.Y.Z 和 latest。
以访问 TUN 设备的方式运行它:
docker run --rm -it --cap-add=NET_ADMIN --device=/dev/net/tun \
yuezk/globalprotect-openconnect:<version> \
connect <portal> --cookie-on-stdin
在无头环境中进行浏览器身份验证时,请使用远程浏览器身份验证:
docker run --rm -it --cap-add=NET_ADMIN --device=/dev/net/tun \
yuezk/globalprotect-openconnect:<version> \
connect <portal> --browser remote
在 Linux 主机上,如果 VPN 路由应该影响主机网络命名空间,请添加主机网络:
docker run --rm -it --network host --cap-add=NET_ADMIN --device=/dev/net/tun \
yuezk/globalprotect-openconnect:<version> \
connect <portal> --browser remote
如果没有使用 --network host,VPN 连接将停留在容器的网络命名空间内。macOS 和 Windows 上的 Docker Desktop 不会通过 --network host 让主机使用 VPN;请在主机上运行 gpclient 或使用容器网关设置以处理主机流量。
或者,将 gpauth 远程浏览器输出通过管道传递给 gpclient:
docker run --rm -it --entrypoint gpauth yuezk/globalprotect-openconnect:<version> \
<portal> --browser remote 2>/dev/null \
| docker run --rm -i --cap-add=NET_ADMIN --device=/dev/net/tun \
yuezk/globalprotect-openconnect:<version> \
connect <portal> --cookie-on-stdin
该镜像仅包含 gpclient 和 gpauth。它不包含嵌入式 webview 认证、gpgui-helper 或 gpgui。
其他发行版
手动安装
-
安装依赖项:
webkit2gtklibsecretlibayatana-appindicator或libappindicator-gtk3
-
下载并解压: 从 releases 页面下载
globalprotect-openconnect_${version}_${arch}.bin.tar.xz:tar -xJf globalprotect-openconnect_${version}_${arch}.bin.tar.xz -
安装:
sudo make install
从源代码构建
你可以使用 DevContainer(推荐)或本地开发环境从源代码构建应用程序。
方法 1:使用 DevContainer(推荐)
该项目包含一个 DevContainer 配置,提供一个一致、可复现的构建环境,并预先安装了所有依赖项。
先决条件
- Docker
- Visual Studio Code(可选,用于 IDE 支持)
- Dev Containers 扩展(如果使用 VS Code)
构建步骤
-
克隆仓库:
git clone https://github.com/yuezk/GlobalProtect-openconnect.git cd GlobalProtect-openconnect git submodule update --init --recursive -
构建 DevContainer 镜像:
docker build -t gpoc-devcontainer .devcontainer/ -
构建项目:
要构建包括 GUI 助手在内的所有内容,请运行此命令:
docker run --privileged --cap-add=NET_ADMIN --device=/dev/net/tun \ --tty -v "$(pwd)":/workspace -w /workspace gpoc-devcontainer \ bash -c "export PATH=/usr/local/cargo/bin:\$PATH && make build"要在没有 GUI 辅助的情况下构建,请运行与上面相同的命令,但在执行
make时传递BUILD_GUI_HELPER=0参数。 -
定位构建产物:
编译后的二进制文件将在
target/release/中可用:gpclient– 命令行客户端gpservice– 后台服务gpauth– 认证辅助工具gpgui-helper– GUI 辅助工具
替代方案:使用 VS Code
- 在 VS Code 中打开项目
- 出现提示时,点击“在容器中重新打开”(或运行 Dev Containers: Reopen in Container)
- 容器准备好后,打开终端并运行:
make build
方法 2:本地开发构建
前提条件
- Rust 1.89 或更高版本
- Tauri 依赖
- OpenConnect 源码构建依赖:
autoconf、automake、autopoint/gettext、libtool、patch、pkg-config、libxml2、zlib、lz4、gnutls、p11-kit、nettle和gmp开发包 pkexec和gnome-keyring(KDE 上为pam_kwallet)nodejs和pnpm(可选)
构建步骤
-
下载源代码:
从 releases 页面下载
globalprotect-openconnect-${version}.tar.gz -
解压并构建:
tar -xzf globalprotect-openconnect-${version}.tar.gz cd globalprotect-openconnect-${version} make build -
安装:
sudo make install注意: 当前不支持
DESTDIR。
测试您的构建
验证 CLI 客户端是否正常工作:
./target/release/gpclient --help
构建选项
BUILD_GUI_HELPER=0– 仅构建 CLI 组件(不包括 GUI)OFFLINE=1– 使用捆绑的依赖项在离线模式下构建
常见问题
问:我如何解决“安全存储未准备好”错误?
解决方案 1: 更新到 2.2.0 或更高版本,其中包含基于文件的存储回退功能。
解决方案 2: 安装 gnome-keyring 软件包并重启系统。
问:在使用 CLI 时如何修复“无法打开显示器”错误?
如果遇到 (gpauth:18869): Gtk-WARNING **: 10:33:37.566: cannot open display:,尝试使用 sudo -E 运行命令:
sudo -E gpclient connect <portal>
参见相关问题:#316
许可
试用和定价
CLI 版本 完全免费且开源。GUI 版本 是付费应用,安装后有 7 天试用期。
开源许可证
该项目由多个组件组成,每个组件都有其自己的许可证:
| 组件 | 类型 | 许可证 |
|---|---|---|
| gpapi | 包 | MIT |
| openconnect | 包 | GPL-3.0 |
| common | 包 | GPL-3.0 |
| auth | 包 | GPL-3.0 |
| gpservice | 应用程序 | GPL-3.0 |
| gpclient | 应用程序 | GPL-3.0 |
| gpauth | 应用程序 | GPL-3.0 |
| gpgui-helper | 应用程序 | GPL-3.0 |
- 本文标题:GlobalProtect-openconnect - 一个用于 Linux 的 GlobalProtect
- 本文链接:https://cn121.com/desktop/yuezk-globalprotect-openconnect.html
- 原项目:yuezk/GlobalProtect-openconnect 版权归原作者 yuezk 及贡献者所有
- 收录信息:本站于 2026-10-07 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 GPL-3.0(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。基于本页内容形成的衍生作品, 须同样以该协议发布。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 yuezk/GlobalProtect-openconnect。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。