{"id":23672381,"url":"https://github.com/yuezk/GlobalProtect-openconnect","last_synced_at":"2025-09-02T00:32:37.841Z","repository":{"id":36982757,"uuid":"240669595","full_name":"yuezk/GlobalProtect-openconnect","owner":"yuezk","description":"A GlobalProtect VPN client for Linux, written in Rust, based on OpenConnect and Tauri, supports SSO with MFA, Yubikey, and client certificate authentication, etc.","archived":false,"fork":false,"pushed_at":"2025-07-18T08:03:37.000Z","size":6815,"stargazers_count":1720,"open_issues_count":87,"forks_count":181,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-08-11T00:34:24.571Z","etag":null,"topics":["authentication","azure","client-certificate-authentication","globalprotect","gui","linux","mfa","okta","openconnect","paloaltonetworks","rust","saml","tauri","tauri-apps","vpn","yubikey","yubikey-authenticators"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuezk.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"yuezk","custom":["https://buymeacoffee.com/yuezk","https://paypal.me/zongkun"]}},"created_at":"2020-02-15T08:23:48.000Z","updated_at":"2025-08-10T15:51:14.000Z","dependencies_parsed_at":"2023-09-24T12:52:41.041Z","dependency_job_id":"8e65cf5e-f603-4af2-925e-39c8a457332e","html_url":"https://github.com/yuezk/GlobalProtect-openconnect","commit_stats":{"total_commits":374,"total_committers":37,"mean_commits":"10.108108108108109","dds":"0.39839572192513373","last_synced_commit":"366b95ce1f5d2cbdaddf44f179df1846f9e11712"},"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/yuezk/GlobalProtect-openconnect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuezk%2FGlobalProtect-openconnect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuezk%2FGlobalProtect-openconnect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuezk%2FGlobalProtect-openconnect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuezk%2FGlobalProtect-openconnect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuezk","download_url":"https://codeload.github.com/yuezk/GlobalProtect-openconnect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuezk%2FGlobalProtect-openconnect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273213765,"owners_count":25065058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","azure","client-certificate-authentication","globalprotect","gui","linux","mfa","okta","openconnect","paloaltonetworks","rust","saml","tauri","tauri-apps","vpn","yubikey","yubikey-authenticators"],"created_at":"2024-12-29T11:00:47.397Z","updated_at":"2025-09-02T00:32:37.825Z","avatar_url":"https://github.com/yuezk.png","language":"Rust","funding_links":["https://ko-fi.com/yuezk","https://buymeacoffee.com/yuezk","https://paypal.me/zongkun"],"categories":["Rust"],"sub_categories":[],"readme":"# GlobalProtect-openconnect\n\nA GUI for GlobalProtect VPN, based on OpenConnect, supports the SSO authentication method. Inspired by [gp-saml-gui](https://github.com/dlenski/gp-saml-gui).\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"300\" src=\"https://github.com/yuezk/GlobalProtect-openconnect/assets/3297602/9242df9c-217d-42ab-8c21-8f9f69cd4eb5\"\u003e\n\u003c/p\u003e\n\n## Features\n\n- [x] Better Linux support\n- [x] Support both CLI and GUI\n- [x] Support both SSO and non-SSO authentication\n- [x] Support the FIDO2 authentication (e.g., YubiKey)\n- [x] Support authentication using default browser\n- [x] Support client certificate authentication\n- [x] Support multiple portals\n- [x] Support gateway selection\n- [x] Support connect gateway directly\n- [x] Support auto-connect on startup\n- [x] Support system tray icon\n\n## Usage\n\n### CLI\n\nThe CLI version is always free and open source in this repo. It has almost the same features as the GUI version.\n\n```\nUsage: gpclient [OPTIONS] \u003cCOMMAND\u003e\n\nCommands:\n  connect     Connect to a portal server\n  disconnect  Disconnect from the server\n  launch-gui  Launch the GUI\n  help        Print this message or the help of the given subcommand(s)\n\nOptions:\n      --fix-openssl        Get around the OpenSSL `unsafe legacy renegotiation` error\n      --ignore-tls-errors  Ignore the TLS errors\n  -h, --help               Print help\n  -V, --version            Print version\n\nSee 'gpclient help \u003ccommand\u003e' for more information on a specific command.\n```\n\nTo use the external browser for authentication with the CLI version, you need to use the following command:\n\n```bash\nsudo -E gpclient connect --browser default \u003cportal\u003e\n```\n\nOr you can try the following command if the above command does not work:\n\n```bash\ngpauth \u003cportal\u003e --browser default 2\u003e/dev/null | sudo gpclient connect \u003cportal\u003e --cookie-on-stdin\n```\n\nYou can specify the browser with the `--browser \u003cbrowser\u003e` option, e.g., `--browser firefox`, `--browser chrome`, etc.\n\n### GUI\n\nThe GUI version is also available after you installed it. You can launch it from the application menu or run `gpclient launch-gui` in the terminal.\n\n\u003e [!Note]\n\u003e\n\u003e The GUI version is partially open source. Its background service is open sourced in this repo as [gpservice](./apps/gpservice/). The GUI part is a wrapper of the background service, which is not open sourced.\n\n## Installation\n\n### Debian/Ubuntu based distributions\n\n#### Install from PPA\n\n```\nsudo add-apt-repository ppa:yuezk/globalprotect-openconnect\nsudo apt-get install globalprotect-openconnect\n```\n\n\u003e [!Note]\n\u003e\n\u003e For Linux Mint, you might need to import the GPG key with: `sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7937C393082992E5D6E4A60453FC26B43838D761` if you encountered an error `gpg: keyserver receive failed: General error`.\n\n#### Install from deb package\n\nDownload the latest deb package from [releases](https://github.com/yuezk/GlobalProtect-openconnect/releases) page. Then install it with `apt`:\n\n```bash\nsudo apt install --fix-broken globalprotect-openconnect_*.deb\n```\n\n### Arch Linux / Manjaro\n\n#### Install from AUR\n\nInstall from AUR: [globalprotect-openconnect-git](https://aur.archlinux.org/packages/globalprotect-openconnect-git/)\n\n```bash\nyay -S globalprotect-openconnect-git\n```\n\n#### Install from package\n\nDownload the latest package from [releases](https://github.com/yuezk/GlobalProtect-openconnect/releases) page. Then install it with `pacman`:\n\n```bash\nsudo pacman -U globalprotect-openconnect-*.pkg.tar.zst\n```\n\n### Fedora 38 and later / Fedora Rawhide\n\n#### Install from COPR\n\nThe package is available on [COPR](https://copr.fedorainfracloud.org/coprs/yuezk/globalprotect-openconnect/) for various RPM-based distributions. You can install it with the following commands:\n\n```bash\nsudo dnf copr enable yuezk/globalprotect-openconnect\nsudo dnf install globalprotect-openconnect\n```\n\n### openSUSE Leap 15.6 / openSUSE Tumbleweed\n\n#### Install from OBS (openSUSE Build Service)\n\nThe package is also available on [OBS](https://build.opensuse.org/package/show/home:yuezk/globalprotect-openconnect) for various RPM-based distributions. You can follow the instructions [on this page](https://software.opensuse.org//download.html?project=home%3Ayuezk\u0026package=globalprotect-openconnect) to install it.\n\n### Other RPM-based distributions\n\n#### Install from RPM package\n\nDownload the latest RPM package from [releases](https://github.com/yuezk/GlobalProtect-openconnect/releases) page.\n\n```bash\nsudo rpm -i globalprotect-openconnect-*.rpm\n```\n\n### Gentoo\n\nIt is available via `guru` and `lamdness` overlays.\n\n```bash\nsudo eselect repository enable guru\nsudo emerge -r guru sync\nsudo emerge -av net-vpn/GlobalProtect-openconnect\n```\n\n### Other distributions\n\n- Install `openconnect \u003e= 8.20`, `webkit2gtk`, `libsecret`, `libayatana-appindicator` or `libappindicator-gtk3`.\n- Download `globalprotect-openconnect_${version}_${arch}.bin.tar.xz` from [releases](https://github.com/yuezk/GlobalProtect-openconnect/releases) page.\n- Extract the tarball with `tar -xJf globalprotect-openconnect_${version}_${arch}.bin.tar.xz`.\n- Run `sudo make install` to install the client.\n\n## Build from source\n\nYou can also build the client from source, steps are as follows:\n\n### Prerequisites\n\n- [Install Rust 1.80 or later](https://www.rust-lang.org/tools/install)\n- Install Tauri dependencies: https://tauri.app/start/prerequisites/\n- Install `perl` and `jq`\n- Install `openconnect \u003e= 8.20` and `libopenconnect-dev` (or `openconnect-devel` on RPM-based distributions)\n- Install `pkexec`, `gnome-keyring` (or `pam_kwallet` on KDE)\n- Install `nodejs` and `pnpm` (optional only if you downloaded the source tarball from the release page and run with the `BUILD_FE=0` flag, see below)\n\n### Build\n\n1. Download the source code tarball from [releases](https://github.com/yuezk/GlobalProtect-openconnect/releases) page. Choose `globalprotect-openconnect-${version}.tar.gz`.\n2. Extract the tarball with `tar -xzf globalprotect-openconnect-${version}.tar.gz`.\n3. Enter the source directory and run `make build BUILD_FE=0` to build the client.\n3. Run `sudo make install` to install the client. (Note, `DESTDIR` is not supported)\n\n## FAQ\n\n1. How to deal with error `Secure Storage not ready`\n\n   Try upgrade the client to `2.2.0` or later, which will use a file-based storage as a fallback.\n\n   You need to install the `gnome-keyring` package, and restart the system (See [#321](https://github.com/yuezk/GlobalProtect-openconnect/issues/321), [#316](https://github.com/yuezk/GlobalProtect-openconnect/issues/316)).\n\n2. How to deal with error `(gpauth:18869): Gtk-WARNING **: 10:33:37.566: cannot open display:`\n\n   If you encounter this error when using the CLI version, try to run the command with `sudo -E` (See [#316](https://github.com/yuezk/GlobalProtect-openconnect/issues/316)).\n\n## About Trial\n\nThe CLI version is always free, while the GUI version is paid. There are two trial modes for the GUI version:\n\n1. 10-day trial: You can use the GUI stable release for 10 days after the installation.\n2. 14-day trial: Each beta release has a fresh trial period (at most 14 days) after released.\n\n## License\n\n- crate [gpapi](./crates/gpapi): [MIT](./crates/gpapi/LICENSE)\n- crate [openconnect](./crates/openconnect): [GPL-3.0](./crates/openconnect/LICENSE)\n- crate [common](./crates/common): [GPL-3.0](./crates/common/LICENSE)\n- crate [auth](./crates/auth): [GPL-3.0](./crates/auth/LICENSE)\n- app [gpservice](./apps/gpservice): [GPL-3.0](./apps/gpservice/LICENSE)\n- app [gpclient](./apps/gpclient): [GPL-3.0](./apps/gpclient/LICENSE)\n- app [gpauth](./apps/gpauth): [GPL-3.0](./apps/gpauth/LICENSE)\n- app [gpgui-helper](./apps/gpgui-helper): [GPL-3.0](./apps/gpgui-helper/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuezk%2FGlobalProtect-openconnect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuezk%2FGlobalProtect-openconnect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuezk%2FGlobalProtect-openconnect/lists"}