Skip to content

keathmilligan/stunt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  ____  _____           _____
 / ___||_   _|_   _ _ _|_   _|
 \___ \  | | | | | | '_ \| |
  ___) | | | | |_| | | | | |
 |____/  |_|  \__,_|_| |_|_|
  Stupid Tunnel Tricks

Stupid Tunnel Tricks — a terminal user interface for defining, configuring, and managing SSH tunnel connections, Kubernetes port-forwards, and sshuttle VPN sessions.


CI Release License: MIT

macOS DMG Windows MSI Homebrew Scoop apt rpm crates.io Install Scripts

stunt.mp4

Features

stunt allows you to define tunnels with SSH, Kubernetes and sshuttle that persist when you close the app. While it is running, stunt monitors and maintains active tunnel connections.

  • SSH local/remote
  • Kubernetes port-forwarding
  • sshuttle

Installation

Download the latest release for your platform from the releases page, or install via a package manager:

macOS (Homebrew)

brew tap keathmilligan/tap
brew install keathmilligan/tap/stunt

Stay up-to-date with brew upgrade stunt.

See the macOS Install Guide for other ways to install on macOS.

Windows (PowerShell)

In an elevated powershell session, run:

irm https://packages.keathmilligan.net/stunt/install.ps1 | iex

See the Windows Install Guide for other ways to install on Windows.

Linux (shell installer)

curl -fsSL https://packages.keathmilligan.net/stunt/install.sh | sh

This will install stunt into ~/.local/bin.

See the Linux Install Guide for other ways to install on Linux.

Usage

stunt

Key Bindings

Normal Mode

Key Action
n New entry
e Edit selected entry
d Delete selected entry
Enter Connect / disconnect selected entry
j / k or arrow keys Navigate list
q / Ctrl+C Quit

Form Mode

Key Action
Tab / Down Next field
Shift+Tab / Up Previous field
Ctrl+A Add a new forward
Ctrl+D Delete selected forward
Ctrl+T Cycle forward type (Local / Remote / Dynamic for SSH; Pod / Service / Deployment for K8s)
Enter Confirm field / save entry
Esc Cancel / go back

Configuration

Configuration is stored at:

Platform Path
Linux ~/.local/share/stunt/tunnels.toml
macOS ~/Library/Application Support/stunt/tunnels.toml
Windows %APPDATA%\stunt\tunnels.toml

SSH Entry

[[entries]]
type = "ssh"
name = "prod-db"
host = "bastion.example.com"
port = 22                         # optional, default 22
user = "deploy"                   # optional
identity_file = "~/.ssh/id_ed25519"  # optional
auto_restart = true               # optional, default false

  [[entries.forwards]]
  type = "local"
  bind_port = 5432
  remote_host = "db.internal"
  remote_port = 5432

  [[entries.forwards]]
  type = "dynamic"
  bind_port = 1080

Kubernetes Entry

[[entries]]
type = "k8s"
name = "api-debug"
context = "prod"           # optional, uses current context if omitted
namespace = "default"      # optional
resource_type = "deployment"
resource_name = "api-server"
auto_restart = false

  [[entries.forwards]]
  local_port = 8080
  remote_port = 80

Supported resource_type values: pod, service, deployment.

sshuttle Entry

[[entries]]
type = "sshuttle"
name = "corp-vpn"
host = "bastion.example.com"
subnets = ["10.0.0.0/8", "192.168.0.0/16"]
port = 22                         # optional, uses sshuttle default if omitted
user = "alice"                    # optional
identity_file = "~/.ssh/id_ed25519"  # optional
auto_restart = true               # optional, default false

License

MIT

About

An SSH tunnel manager TUI

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages