Skip to content

madLinux7/dssh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

26 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

dssh β€” Dead Simple SSH

Go Release License: MIT Platform SQLite AES-256-GCM

The only SSH connection management tool you'll ever need. No dependencies, no more editing /etc/hosts.

Four core features: Create, Connect, Edit, Delete. Dead-simple and cross-platform for every CLI.

Passwords are encrypted using a master passphrase (you should consider using pubkeys only tho ;)).

dssh demo
TUI connect demo

dssh CLI instant connect demo
CLI instant connect demo

dssh tab navigation
TUI navigation demo

Table of Contents

Features

Core:

  • Fancy TUI ✨ β€” run dssh with no args to connect and manage all your connections
  • Instant connect πŸš€ β€” dssh myserver and you're in
  • Create Wizard πŸͺ„ β€” easily add new connections without memorizing flags
  • Edit ✏️ β€” no need to delete and re-add connections, just edit them

Also:

  • Launch into a directory πŸ“‚ β€” optionally land in a specific remote directory on connect
  • Password encryption πŸ”’ β€” AES-256-GCM + Argon2id, protected by a master passphrase
  • Cross-platform πŸ’» β€” Linux, macOS, Windows, FreeBSD (amd64 + arm64)
  • Dead simple migration πŸ“¦ β€” moving to a new machine? Just take ~/.dssh/dssh.db with you. That's it.

How it works

dssh is a thin wrapper around your system's ssh binary:

  • Key auth β€” syscall.Exec replaces the dssh process with ssh (zero overhead, full terminal control)
  • Password auth β€” ssh runs as a child process with SSH_ASKPASS to supply the decrypted password (no sshpass needed)
  • Data β€” connections stored in SQLite at ~/.dssh/dssh.db, no config files
  • Crypto β€” AES-256-GCM encryption with Argon2id key derivation for stored passwords

Usage

Command Reference

Command Description
dssh Launch interactive connection picker
dssh <name> Connect to a saved host by name
dssh <name> -- <args> Connect with extra args forwarded to ssh
dssh add [-p PORT] [-d DIR] <name> <target> [password] Save a new connection
dssh rm <name> Delete a saved connection
dssh list / dssh ls List all saved connections
dssh create / dssh new Interactive form to create a connection
dssh edit Edit an existing connection
dssh delete Delete a connection (TUI, triple-confirm)
dssh reset Delete all data (double confirmation)
dssh --version Print version

TUI Navigation

Key Action
Tab / Shift+Tab Switch between tabs
↑ / ↓ Navigate lists
Enter Select / confirm
ESC / Q Quit

Quick start - Let's Go!

# Add a connection (will use default pubkey identity)
dssh add myserver root@192.168.1.10

# Connect
dssh myserver

# You're in!

# Permanently delete the connection (no confirmation asked)
dssh rm myserver
# Open the TUI where you can basically do anything
dssh

Run dssh with no arguments to launch the TUI.

Add a connection

# user@host (port 22 by default)
dssh add myserver root@192.168.1.10

# Custom port
dssh add myserver -p 2222 root@192.168.1.10

# SSH URI syntax
dssh add myserver ssh://root@192.168.1.10:2222

# Start in a specific remote directory
dssh add myserver -d /var/www root@192.168.1.10

# With password (will prompt for master passphrase)
dssh add myserver root@192.168.1.10 'my-ssh-password'

Connect to a host

# Direct connect by name
dssh myserver

# Pass extra args to ssh
dssh myserver -- -v -L 8080:localhost:80

Create (TUI)

Launch the TUI wizard to create a connection interactively.

dssh create
dssh new # alias

dssh wizard

The wizard supports both key-based and password-based authentication. For password auth, you'll be prompted to create a master passphrase on first use.

Edit (TUI)

Launch the TUI directly on the Edit tab to modify an existing connection.

dssh edit

Delete (TUI)

Launch the TUI directly on the Delete tab. Requires pressing Enter 3 times on the same item to confirm.

dssh delete

List connections (CLI)

dssh list
dssh ls # alias
NAME                USER       HOST            PORT   AUTH      DIR
mike-pulse-001      nomad      10.51.140.154   22     key       -
myserver            root       192.168.1.10    22     password  -
rpg-server          npc        192.168.188.7   22222  key       /var/larp
sharp-nexus-001     deploy     10.105.210.233  22     key       -
skylink             root       skylink.vps     22     key       -

Remove a connection (CLI)

dssh rm myserver

Remove a connection instantly. No confirmation asked.

Reset everything

Wipe all saved connections, encrypted passwords, and settings (deletes the SQLite database). Requires two confirmations to prevent accidents.

dssh reset
This will delete ALL saved connections, passwords, and settings. Continue? (yes/no): yes
Are you sure? This cannot be undone. Type 'reset' to confirm: reset
All data has been reset

Installation

Install & Update script (recommended)

Linux / macOS / FreeBSD:

curl -fsSL https://raw.githubusercontent.com/madLinux7/dssh/main/install.sh | sh

Installs to ~/.local/bin by default. Override with INSTALL_DIR=/custom/path.

Windows (PowerShell):

irm https://raw.githubusercontent.com/madLinux7/dssh/main/install.ps1 | iex

Installs to %LOCALAPPDATA%\dssh and adds it to your PATH automatically.

Homebrew (macOS)

brew install madLinux7/tap/dssh

Other package managers for Linux & Windows following soon!

From GitHub Releases

Download the latest binary for your platform from Releases and place it in your $PATH.

# Example for Linux amd64
curl -L https://github.com/madLinux7/dssh/releases/latest/download/dssh-linux-amd64 -o dssh
chmod +x dssh
sudo mv dssh /usr/local/bin/

From source

Requires Go 1.26+.

go install github.com/madLinux7/dssh/cmd/dssh@latest

Build locally

git clone https://github.com/madLinux7/dssh.git
cd dssh
# Build only with optimized -ldflags
make build
# Build and compress binary (upx needed)
make release

✨ Acknowledgements ✨

dssh has no need for reinventing the wheel β€” thanks to the maintainers and contributors of these amazing projects:

  • Bubble Tea by Charm β€” pretty sick TUI framework
  • Bubbles by Charm β€” ready-to-go TUI components (lists, text inputs) so I don't need to reinvent the wheel
  • Lip Gloss by Charm β€” style definitions that make the terminal look ✨ pretty ✨
  • Cobra by Steve Francia β€” the CLI framework powering every dssh command
  • modernc.org/sqlite by Jan Mercl β€” pure-Go SQLite driver that lets you ship a single static binary with zero CGO
  • golang.org/x/crypto by the Go team β€” Argon2id key derivation keeping your passwords safe
  • golang.org/x/term by the Go team β€” secure terminal password reading without echo
  • UPX by Markus Oberhumer, Laszlo Molnar & John Reiser - Reducing the Linux release binary size by an insane 64%! (9.0MB -> 3.3MB)

About

The only SSH connection manager you'll ever need. TUI & CLI. No dependencies, no ssh_config

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors