ssh-x-term
v2.1.4
Published
TUI to handle multiple SSH connections simultaneously
Maintainers
Readme
SSH-X-Term
SSH-X-Term is a modern, terminal-based SSH client with a rich TUI (Text User Interface) built on Bubble Tea.
SSH-X-Term is a fully self-contained SSH client implemented entirely in Go. There are no external SSH tools or wrappers involved — all SSH, SCP, SFTP, port tunneling, packet inspection, and terminal handling is built in.
It combines SSH connection management, interactive terminals, SCP/SFTP file transfers, visual port forwarding & traffic inspection, and secure credential storage into a single, fast, cross-platform application.
Credentials can be stored securely using your local system keyring or directly in your Bitwarden vault.
✨ Highlights
- ✅ Pure Go SSH client — no
ssh, nopassh, noplinkrequired - ✅ SSH Port Forwarding & Tunnels — Local (
-L), Remote (-R), and Dynamic SOCKS5 (-D) - ✅ Visual Topology Diagrams — interactive ASCII/Unicode tunnel graph with live metrics
- ✅ Live Packet Inspector & Hex Dump — stream raw payload packets in real time with 1-click clipboard export
- ✅ Cross-platform — identical behavior and rendering on Linux, macOS, and Windows
- ✅ Built-in terminal emulator — full xterm-256color support with scrollback buffer
- ✅ SCP / SFTP Dual-Pane File Manager — seamlessly transfer files over existing sessions
- ✅ Secure Credential Storage — system keyring (Keychain, Secret Service, Credential Manager) + Bitwarden CLI
- ✅ First-class TUI — responsive, keyboard-driven, mouse-aware full-screen experience
📺 Demo & Walkthrough

🚀 Features
🔀 SSH Port Forwarding & Tunnel Manager
Manage and monitor SSH tunnels directly within the TUI without remembering complex CLI flags.
- Supported Tunnel Modes:
- Local Port Forwarding (
-L): Forward local ports to remote services (e.g. remote VNC desktop5900➔127.0.0.1:5900, private PostgreSQL/MySQL databases, internal web dashboards, Kubernetes pods). - Remote Port Forwarding (
-R): Expose local development servers or APIs to a remote relay server. - Dynamic SOCKS5 Proxy (
-D): Turn your remote SSH host into a flexible SOCKS5 proxy for browsers and CLI tools.
- Local Port Forwarding (
- Port Conflict Detection: Automatically verifies local and remote port availability before binding to prevent socket collisions.
- Auto-Start Support: Flag tunnels to automatically activate whenever a host connection is initiated.
- Safe Persistent Storage: Saved directly alongside your host configuration with OpenSSH compatibility.
◄ Tunnel 1 of 1: Remote VNC Desktop ►
╭───────────────────── TOPOLOGY: LOCAL (Remote VNC Desktop) ───────────────────────╮
│ │
│ ╭──────────────────╮ ╭──────────────────╮ ╭──────────────────╮ │
│ │ LOCAL LISTENER │ ══(SSH)══► │ SSH RELAY │ ──(TCP)──► │ REMOTE TARGET │ │
│ │ 127.0.0.1:5900 │ │ remote-host:22 │ │ 127.0.0.1:5900 │ │
│ │ (Your Machine) │ │(Bastion / Server)│ │ (Target Service) │ │
│ ╰──────────────────╯ ╰──────────────────╯ ╰──────────────────╯ │
│ │
╰──────────────────────────────────────────────────────────────────────────────────╯
╭──────────────────┬──────────────────┬────────────────────────────────────┬──────────────────╮
│ STATUS: ● ACTIVE │ CONNS: 1 active │ TRAFFIC: ▲ 14.2 KB ▼ 84.1 KB │ UPTIME: 08m 42s │
╰──────────────────┴──────────────────┴────────────────────────────────────┴──────────────────╯🔍 Visual Topology & Live Packet Inspector
Inspect the live data stream flowing through your SSH tunnels in real time.
- Visual 2D Topology Diagram (v / g):
- Clear box-and-arrow diagrams detailing listener, bastion gateway, and target endpoints.
- Color-coded statuses: Neon Green (
● ACTIVE), Gray (○ INACTIVE), Red (✖ ERROR). - Live metrics dashboard: active connection counts, directional byte counters, and uptime.
- Live Traffic Inspector (x):
- Bidirectional stream tagging (
LOCAL -> REMOTEvsREMOTE -> LOCAL) with microsecond timestamps. - Hex + ASCII Dump Mode: Wireshark-style 16-byte hexadecimal offsets alongside ASCII text columns.
- ASCII Text Stream Mode (m): Clean formatted text view for HTTP, Redis, SMTP, or plain socket streams.
- Stream Controls: Pause / Freeze live feed (f / Space), scroll history (↑/↓/PgUp/PgDn), and clear buffer (c).
- Bidirectional stream tagging (
- 1-Click Clipboard Export (y):
- Instantly copy all raw captured traffic data (Hex Dump or ASCII) to the system clipboard.
LIVE TRAFFIC INSPECTOR: Web Service Tunnel (HEX + ASCII DUMP) [✓ COPIED TO CLIPBOARD]
╭──────────────────────────────────────────────────────────────────────────────────╮
│ ──► [12:00:00.100] LOCAL -> REMOTE (16 bytes) │
│ 00000000 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a |GET / HTTP/1.1..| │
│ │
│ ◄── [12:00:00.115] REMOTE -> LOCAL (17 bytes) │
│ 00000000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d |HTTP/1.1 200 OK.| │
│ 00000010 0a |.| │
╰──────────────────────────────────────────────────────────────────────────────────╯⚡ Quick Connect Mode
Fast SSH access without launching the full TUI.
sxt -l— minimal interactive connection selectorsxt -c <connection-id>— instant connection by ID- Start typing immediately to filter connections
- Arrow keys exit filter and navigate
- Fully interactive terminal with resize support
🖥️ Integrated SSH Terminal
- VT100 / ANSI escape sequence compliant
- Full xterm-256color support
- 10,000-line scrollback buffer
- Mouse and keyboard scrolling
- Text selection and clipboard copy
- Graceful window resize handling
📂 SCP / SFTP File Manager
- Dual-pane Local ↔ Remote interface
- Upload, download, rename, delete
- Create files and directories
- Recursive search (
/) - Uses the active authenticated SSH session
🔐 Secure Credential Management
- Local storage via system keyring
- macOS Keychain
- Linux Secret Service (libsecret / GNOME Keyring / KWallet)
- Windows Credential Manager
- Bitwarden integration via Bitwarden CLI (
bw) - Passwords and private key passphrases are never stored in plaintext
⚙️ SSH Authentication
- SSH Agent (recommended for encrypted keys)
- Encrypted private keys supported via
ssh-agent - Password authentication via system keyring
- Compatible with standard OpenSSH config
🛠️ Prerequisites
Required
- Go 1.24+ (only if building from source)
- System Keyring (for local password storage)
Optional
- SSH Agent (recommended for encrypted SSH keys)
- Bitwarden CLI (
bw) — for Bitwarden vault support - tmux — open SSH sessions in new tmux windows
⚠️ SSH-X-Term 2.0+ has no external SSH dependencies. You do not need
ssh,passh,plink, or PuTTY.
📥 Installation
Option 1: Install via npm (Recommended)
npm install -g ssh-x-term
sxtOption 2: Install via Homebrew (macOS/Linux)
brew tap eugeniofciuvasile/tap
brew install ssh-x-term
sxtOption 3: Build from source
git clone https://github.com/eugeniofciuvasile/ssh-x-term.git
cd ssh-x-term
go build -o sxt ./cmd/sxtOr:
go install github.com/eugeniofciuvasile/ssh-x-term/cmd/sxt@latestOption 4: Prebuilt Binary
Download prebuilt binaries for Linux, macOS, and Windows from the GitHub Releases page.
🎮 Keybindings & Controls
Main Host View
| Key | Action | | --- | --- | | Enter | Connect to selected SSH host | | t | Open Tunnel & Port Forwarding Manager | | s | Open SCP / SFTP File Manager | | a / e / d | Add / Edit / Delete host connection | | o | Toggle tmux session window mode | | / | Filter / Search hosts | | q | Quit application |
Tunnel Manager (t)
| Key | Action | | --- | --- | | Space / Enter | Activate / Deactivate selected tunnel | | v / g | Open Visual Topology Graph & Inspector | | a / e / d | Add / Edit / Delete tunnel configuration | | Esc / q | Return to host list |
Tunnel Form (a / e)
| Key | Action |
| --- | --- |
| Tab / Shift+Tab | Navigate fields |
| Ctrl+T | Cycle tunnel type (Local -L / Remote -R / Dynamic -D) |
| Ctrl+A | Toggle Auto-start on Connect |
| Enter | Save tunnel |
| Esc | Cancel |
Topology Graph & Live Inspector (v / g)
| Key | Action | | --- | --- | | Space / Enter | Activate / Deactivate tunnel | | x | Toggle Live Traffic Inspector / Topology View | | y / Ctrl+Y | Copy all captured packets to clipboard | | m | Toggle Hex + ASCII Dump / ASCII Text Stream mode | | f | Pause / Resume live packet stream | | c | Clear packet capture buffer | | ← / → | Switch between tunnels | | ↑ / ↓ / PgUp / PgDn | Scroll packet stream | | Esc / q | Back to Tunnel Manager |
⚙️ Configuration
| Storage | Description |
| --- | --- |
| Local | Standard SSH config at ~/.ssh/config, passwords in system keyring |
| Bitwarden | Secrets stored securely in Bitwarden vault via bw CLI |
SSH-X-Term stores metadata as clean structured comments in your standard SSH config and remains 100% compatible with OpenSSH tools.
🔑 SSH Agent Setup (Recommended)
eval $(ssh-agent)
ssh-add ~/.ssh/id_ed25519Once added, SSH-X-Term can use encrypted keys seamlessly without prompting for passphrases.
🛡️ Security & Disclaimer
SSH-X-Term is released under the MIT License.
- Credentials are never logged or stored in plaintext.
- All secrets are delegated to native OS Keyring APIs or Bitwarden.
- Tunnels run in secure goroutines with memory isolation and bounded ring buffers for packet inspection.
👏 Credits
- Bubble Tea & Lip Gloss — Terminal UI framework & styling
- go-keyring — Secure OS credential storage
- Bitwarden CLI — Vault integration
- OpenSSH — Protocol specifications and compatibility
