sshtui

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2026 License: MIT

README

sshtui

Release Go Version PRs Welcome Go Report Card

          _   _____ _   _ ___
 ___ ___ | |_|_   _| | | |_ _|   SSH + TUI
/ __/ __|| '_ \| | | | | || |    Inspect and generate SSH keys
\__ \__ \| | | | | | |_| || |    and certificates.
|___/___/|_| |_|_|  \___/|___|   https://github.com/diegovrocha/sshtui

TUI for inspecting and generating SSH keys and certificates. Uses ssh-keygen under the hood.

Built with Bubble Tea. Single binary, only dep: openssh-client.

Contributions welcome! See CONTRIBUTING.md.

Requirements

  • openssh-client — pre-installed on macOS and most Linux distributions. Needs ssh-keygen in $PATH.

Install

Quick install (macOS/Linux)
curl -sSLf https://raw.githubusercontent.com/diegovrocha/sshtui/main/install.sh | sh
Manual download

Download the binary for your platform from Releases:

Platform File
macOS (Apple Silicon) sshtui_darwin_arm64.tar.gz
macOS (Intel) sshtui_darwin_amd64.tar.gz
Linux (amd64) sshtui_linux_amd64.tar.gz
Linux (arm64) sshtui_linux_arm64.tar.gz
Windows (amd64) sshtui_windows_amd64.zip

Extract and move to your PATH:

tar -xzf sshtui_<os>_<arch>.tar.gz
sudo mv sshtui /usr/local/bin/
From source

Requires Go 1.22+:

git clone https://github.com/diegovrocha/sshtui.git
cd sshtui
make install    # builds and copies to /usr/local/bin

Other make targets:

make build           # build binary locally (with version injected via ldflags)
make test            # run Go tests
make vet             # run go vet
make check           # vet + test
make uninstall       # remove from /usr/local/bin

# Release (maintainers only)
make release-auto    # detect bump from commit messages (recommended)
make release-patch   # bug fix: v0.1.0 → v0.1.1
make release-minor   # new feature: v0.1.0 → v0.2.0
make release-major   # breaking change: v0.1.0 → v1.0.0
make release VERSION=0.2.0  # explicit version

Each release-* target runs go vet, tests, tags and pushes. GitHub Actions then builds and publishes the release automatically.

release-auto inspects the commit messages since the last tag and picks the bump kind using conventional commits:

Commit prefix Bump
feat!:, fix!:, or BREAKING CHANGE: in body major
feat:, feat(scope): minor
anything else (fix:, docs:, refactor:, etc.) patch

Features

Inspect
  • Inspect key — public or private key: fingerprint (SHA-256 + MD5), type, size, comment, encrypted flag
  • Inspect cert — principals, validity, signing CA, key ID, extensions, days remaining
Generate
  • Generate key — Ed25519 / RSA / ECDSA / DSA, configurable bits / curve, optional passphrase, comment, output preset (default / hostname suffix / custom)
Utilities
  • History — log of all operations stored in ~/.sshtui/history.log, viewable from the menu
  • Update — in-app download and replace of the binary. Shows scrollable GitHub release notes before installing, then auto-restarts sshtui with the new version (3-second countdown, press r to restart immediately or c to cancel). Also auto-detects new releases on launch and shows a notice in the banner
  • Quit

Navigation

Press ? on any screen to see a contextual help overlay listing the keys that screen understands.

General
Key Action
↑/↓ or j/k Navigate menu and lists
Enter Select / Confirm / Open details
Esc Back to previous screen
q Quit (main menu only)
Ctrl+C Quit from anywhere
/ Fuzzy search filter in main menu
? Toggle contextual help
File picker
Key Action
or Enter Enter highlighted folder
Go to parent directory
Type Filter files by name
Inspect results
Key Action
y Copy details to clipboard
s Save details as .txt
n Inspect another key / cert
↑/↓ Scroll long output
Update
Key Action
↑/↓ Scroll changelog
Enter Install update (on confirm step) / Restart now (on success)
r Restart now after update
c Cancel auto-restart

Docker (test on Linux)

A Dockerfile.test is provided to try sshtui on Linux without installing anything locally:

docker build -t sshtui-test -f Dockerfile.test .
docker run -it --rm -v $(pwd):/keys sshtui-test

The container mounts your current directory as /keys so sshtui can access local key files. Uses debian:stable-slim and downloads the latest released binary automatically.

Theme

sshtui auto-detects light / dark terminals via the $COLORFGBG environment variable and picks appropriate colors. To override detection:

SSHTUI_THEME=light sshtui
SSHTUI_THEME=dark  sshtui
Variable Values Effect
SSHTUI_THEME light, dark Force theme (overrides autodetection)
COLORFGBG auto Read from terminal for autodetection

Screenshots / demos

TODO — add screenshots and an asciinema demo. For now, run sshtui to see it in action.

License

MIT - Diêgo Vieira Rocha

Directories

Path Synopsis
cmd
sshtui command
internal
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL