Skip to content

Get started

dssh wraps your system ssh binary with a TUI, a tiny CLI, and a SQLite store at ~/.dssh/dssh.db. Zero daemons, one static binary, nothing to edit by hand unless you want to.

  • ssh client in PATH (OpenSSH on Linux/macOS/BSD, OpenSSH for Windows on Win10+)
  • A terminal that handles TrueColor + Unicode for the TUI — most modern terminals qualify
  • Only if building from source: Go 1.26+
Terminal window
# Unix (Linux, macOS, FreeBSD)
curl -fsSL https://raw.githubusercontent.com/madLinux7/dssh/main/install.sh | sh
Terminal window
# Windows PowerShell
irm https://raw.githubusercontent.com/madLinux7/dssh/main/install.ps1 | iex

Unix installs to ~/.local/bin (override with INSTALL_DIR=/custom/path). Windows installs to %LOCALAPPDATA%\dssh and patches PATH.

Verify the install:

Terminal window
dssh --version

The first time you launch dssh, a one-time dialog asks where to keep connections. Pick whichever fits — you can change it later with dssh config.

ModeStores connections inWhen to pick it
SQLite~/.dssh/dssh.db (encrypted passwords supported)Clean slate, you want passwords + portability in one file
ssh_config~/.ssh/config or a path you chooseYou already live in ssh_config and want to keep it the source of truth
BothSQLite and ssh_config, toggle with Ctrl+LMixed: keep team-shared hosts in ssh_config, personal/password hosts in SQLite

When picking ssh_config or Both, you’ll also choose a destination file: the main ~/.ssh/config, a directive file like ~/.ssh/config.d/dssh, or any custom path. If the file doesn’t exist, dssh offers to create it.

  1. Add a host via CLI — quickest path, uses your default pubkey:

    Terminal window
    dssh add myserver root@192.168.1.10

    Or go interactive with the wizard:

    Terminal window
    dssh create
  2. Connect — name alone, nothing else:

    Terminal window
    dssh myserver

    You’re in. On Unix, dssh syscall.Execs into ssh — zero wrapper overhead, full terminal control.

  3. List what you have:

    Terminal window
    dssh ls
    NAME USER HOST PORT AUTH DIR JUMP
    myserver root 192.168.1.10 22 key - -

For hosts without key auth, save the password encrypted:

Terminal window
dssh add prod-box deploy@10.0.0.5 'hunter2'

First time you save a password, dssh prompts you to create a master passphrase. That passphrase drives Argon2id key derivation; the resulting AES-256-GCM key encrypts every stored password. Your passphrase itself is never written to disk — a verification token proves correctness on later unlocks.

Prefer key auth whenever you can — it’s faster to launch (process replacement, not a child) and leaves no secret at rest.

No arguments, no sub-command — just:

Terminal window
dssh

Four tabs: Connect, Create, Edit, Delete. Switch tabs with Tab / Shift+Tab or / , pick with Enter, quit with Esc or Ctrl+C. See the TUI keys reference for the full map.