WhereMyTunnels
WhereMyTunnels is a cross-platform tool for viewing SSH connections and tunnels.
Usage
usage: wheremytunnels [options]
Tool for viewing SSH connections
options:
-h, --help show this help message and exit
--version, -v show program's version number and exit
--about, -a Show information about WhereMyTunnels
--interval, -i INTERVAL
Refresh interval in seconds (default: 2)
--no-color Disable colored output
--show-connections Displays attached connections I.E: "LISTEN 127.0.0.1:8081", "ESTABLISHED 15.1.2.5:12385 -> 8.5.1.4:80"
--show-arguments Shows SSH arguments I.E: "ssh test.com -L 8080:localhost:80"
Why does this exist?
During a CTF in late 2024, I found myself five SSH tunnels deep while pivoting between hosts trying to find a flag when I suddenly got disconnected from my ssh jump box.
When I finally got back in, all my notes were gone, and I was left with one question: Where My Tunnels?
How does this work?
- Enumerates active ssh processes using psutil
- Parses ssh processes into:
- Master sockets (-MS) and attached socket forwards/sessions (-S)
- Traditional tunnels (-L, -R, -D)
- Traditional SSH sessions
- Find associations between processes, forwards, and connections
- Detect errors in forwards and connections I.E: a local forward that doesn't have an attached listening connection
- Render everything in a tree structure using rich
Linux Install
Download the wheremytunnels binary from the release page, see (Which linux binary do I pick?) for help
Then run:
chmod 755 wheremytunnels_latest_linux.bin
mv wheremytunnels_latest_linux.bin /usr/bin/wheremytunnels
Which linux binary do I pick?
glibc vs musl
Nearly all linux systems use glibc or the GNU C Library, including:
- Ubuntu
- Debian
- Fedora
- CentOS / RHEL
- Kali
- Arch Linux
However some more "unique" operating systems rely on musl, notably Alpine linux
Architecture
Most systems run on the x86_64 cpu architecture, however some devices use ARM (aarch64)
The simplest way to tell is by running uname -m, you could also determine this by looking at your cpu specifications
Windows Install
There is currently only an x86_64 install for windows, sorry ARM users
After downloading the windows binary run:
Move-Item -Path "wheremytunnels_latest_windows.exe" -Destination "~/AppData/Local/Microsoft/WindowsApps/wheremytunnels.exe"
Examples
wheremytunnels.exe
wheremytunnels.exe --show-arguments --show-connections
Metadata
Release files for WhereMyTunnels 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wheremytunnels-1.2.0.tar.gz | 12.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wheremytunnels-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.9 kB
Release files / wheremytunnels-1.2.0.tar.gz
| Download URL | wheremytunnels-1.2.0.tar.gz |
|---|---|
| Size | 12.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
57262a152f7f7f4acf9bf3c0d10e5bd920f9f15c1aa37d0e633af09f362ba37c
|
|
BLAKE2b-256 checksum How to use checksums |
3c6bdc24016b8cd066e16602d74758aac40401ca33d55a73ca85b30b279bd44d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 19, 2026.
Transparency logRelease files / wheremytunnels-1.2.0-py3-none-any.whl
| Download URL | wheremytunnels-1.2.0-py3-none-any.whl |
|---|---|
| Size | 14.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8a0425169375a61fb1194ceae68b50021a653ed583744e8ca77b0d993c370046
|
|
BLAKE2b-256 checksum How to use checksums |
387ecc5b16bb9d7086841367a9abc354ffff2950ba18cbaa655103e21c698b09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 19, 2026.
Transparency log