gh-net
gh-net copied to clipboard
A network bridge between a Codespace and a local machine.
Codespaces Network Bridge
๐งช The extension is currently in the Preview stage, so some hiccups are expected. Please help us to improve by submitting feedback!
This GitHub CLI extension allows you to bridge the network between a Codespace and your local machine, so the Codespace can reach out to any remote resource that is reachable from your machine. In other words, it uses your local machine as a network gateway to get to those resources.
For instance, if you are using a VPN client to connect to private enterprise network to access a database or any other remote resources, this extension enables you to use those private resources from within a Codespace.
Prerequisites
-
This extension depends on the latest features of GitHub CLI(>= v2.8.0). Please make sure to upgrade it.
-
The extension relies on
gh codespace sshcommand to establish SSH tunnel to a Codespace. If you use GitHub CLI >=2.13.0 theSSHconfig is created automatically for all your Codespaces, otherwise follow SSH setup instructions. -
If your Codespace uses a non-default image, ensure that both the GitHub CLI,
openssh-server, andsudoare installed inside the codespace. Some distros need ansshgroup too. Please see linux dependencies doc for per-distro instructions.
Installation
Mac OSx:
gh extension install github/gh-net
Linux:
sudo gh extension install github/gh-net
The sudo permissions are required during extension installation on Linux due to https://github.com/cli/cli/issues/5456. Hopefully, it won't be the case in the future.
Usage
To start network forwarding from a Codespace to a local machine, run:
sudo gh net start
Connection issues? Please see https://github.com/github/gh-net/issues/9 and SSH setup doc for some of the known solutions.
The command will first open a Codespace selection dialog:
Select a codespace and press enter. The extension will connect to selected codespace and start forwarding network traffic:
There are two panels in the connected view of the extension:
- Panel on the left (
NAT) shows the network address translation table for currently opened connections. For stateful protocols(e.g.TCP) the records are cleaned up automatically after a connection is closed, so the records will come and go as connections are established and teardown. For stateless protocols (e.g.UDPorICMP) or unsuccessfulTCPconnections, the records are cleaned up after a delay; hence those may show up in the list for some time. - Panel on the right (
DNS) shows the resolvedDNSrecords, ashostname,record, andtime-to-live(TTL) values.
Press q or ctrl + c to stop the extension.
CLI Options
--codespace(-c): Codespace name to connect to. [codespace name] [default:none]--dns(-d): Enable/disable DNS resolution. [true|false] [default:true]--gui(-g): Enable/disable GUI mode. [true|false] [default:true]--trace(-t): Specify tracing verbosity. [none|trace|debug|info|warn|error] [default:info]--trace-dest: Specify tracing destination file. [file name] [default:none]--telemetry: Enable/disable sending diagnostics telemetry (noPIIdata is sent). [true|false] [default:true]
Run gh net start -h for details.
Supported platforms
Mac OSx
| OS | Local |
|---|---|
| Big Sur (v11) | โ |
| Monterey (v12) | โ |
Linux
| Distro | Local | Inside Codespace |
|---|---|---|
| Ubuntu | โ | โ |
| Debian | โ | โ |
| Fedora | โ | โ |
| Red Hat | โ | โ |
| Mint | โ | โ |
| OpenSUSE | โ | โ |
| Centos | โ | โ |
| Kali | โ | โ |
| Arch | โ | โ |
| Alpine | โ | โ * |
Windows
| Version | Local |
|---|---|
| Windows 10 | ๐ |
| Windows 11 | ๐ |
Supported architectures
Mac OSx
| Architecture | Status |
|---|---|
| Intel(AMD64) | โ |
| Apple silicon (ARM64) | โ * |
Linux
| Architecture | Status |
|---|---|
| AMD64 | โ |
| ARM64 | โ |
| ARMv6 | โ |
| ARMv7 | โ |
Windows
| Architecture | Status |
|---|---|
| AMD64 | ๐ |
| i386 | ๐ |
Tested VPN Clients
| Name | Status |
|---|---|
| Viscocity | โ |
| GlobalProtect | โ |
| NordVPN | โ |
| Tailscale | โ |
Legend: โ
- supported ๐ - in progress ? - unknown / not tested
For list of supported network protocols refer to this doc.
Troubleshooting
- Something is missing? Please create a โจ feature request.
- Something is incorrect? Please create a ๐ bug report.
- For known issues, refer to ๐ this list.
Useful links
- How it works
- About GitHub CLI
- About GitHub Codespaces
- ๐ Source code