ssh-channels-hub 0.3.2

A CLI tool for managing SSH port forwarding tunnels with auto-reconnect
Documentation
# SSH Channels Hub configuration
#
# Host info (HostName / User / Port / IdentityFile) is read from ~/.ssh/config.
# This file only defines:
#   - which channels to bring up
#   - per-host credentials SSH config can't hold (password / passphrase)
#   - reconnection policy
#
# Optional: point at a non-default SSH config path.
# ssh_config = "~/.ssh/config"

# --- Reconnection settings (applies to all channels) ---
[reconnection]
max_retries = 0                       # 0 = unlimited
initial_delay_secs = 1
max_delay_secs = 30
use_exponential_backoff = true

# --- Per-host credential overrides (optional) ---
# Only needed when SSH config alone can't authenticate (password-auth host,
# or IdentityFile with a passphrase). Keyed by SSH config Host alias.

# [auth.example-server]
# passphrase = "key-passphrase"

# [auth.example-server2]
# password = "your-password-here"

# --- Channel definitions ---
# `hostname` is the SSH config Host alias.
# `local` / `remote` are "host:port" (host defaults to 127.0.0.1) — they
# always literally mean the local / remote side, regardless of direction.
# Append new `[[channels]]` blocks below; nothing else needs to follow them.

[[channels]]
name      = "db-tunnel"
hostname  = "example-server"
direction = "local->remote"           # ssh -L: listen on `local`, forward to `remote`
local     = "3306"
remote    = "3306"

[[channels]]
name      = "web-tunnel"
hostname  = "example-server2"
direction = "local->remote"
local     = "0.0.0.0:8080"
remote    = "127.0.0.1:80"

# Expose a local service on the SSH server:
# [[channels]]
# name      = "expose-local-web"
# hostname  = "example-server"
# direction = "remote->local"         # ssh -R: server binds `remote`, bridge to `local`
# remote    = "8022"
# local     = "80"