Skip to main content

WhereMyTunnels

example_1

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?

  1. Enumerates active ssh processes using psutil
  2. Parses ssh processes into:
    • Master sockets (-MS) and attached socket forwards/sessions (-S)
    • Traditional tunnels (-L, -R, -D)
    • Traditional SSH sessions
  3. Find associations between processes, forwards, and connections
  4. Detect errors in forwards and connections I.E: a local forward that doesn't have an attached listening connection
  5. 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

example_1

wheremytunnels.exe --show-arguments --show-connections

example_2

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)

Source distribution for WhereMyTunnels 1.2.0
File Size Uploaded
wheremytunnels-1.2.0.tar.gz 12.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for WhereMyTunnels 1.2.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page