ls + ssh = lssh
lssh is a terminal-native remote access suite for SSH workflows, cloud inventories, and provider-backed connectors.
It lets you select hosts from OpenSSH config, lssh config, or provider inventories, then operate them through native SSH or connector backends such as AWS SSM, EC2 Instance Connect Endpoint, WinRM, Telnet, and custom providers.
Use it for interactive shells, parallel commands, mux workspaces, file transfer, sync, mount, and monitoring. Connector-backed hosts expose only the operations their connector supports.
- works with your existing SSH config
- interactive host selection
- parallel command execution
brew install blacknon/lssh/lsshgo install github.com/blacknon/lssh/cmd/lssh@latestProvider-backed inventory and connector features use separate provider executables.
If you install only cmd/lssh, those provider binaries are not installed automatically.
For local development, install the bundled providers with:
mise run provider_installFor release builds, either install the all-in-one lssh-complete_* archive or add the matching lssh-providers_* archive from GitHub Releases.
For more installation details, including other options and platform-specific notes, see docs/install.md.
Already using ~/.ssh/config?
Just run:
lsshWant to generate an lssh config from your existing SSH config?
lssh --generate-lssh-conf > ~/.lssh.tomllssh is built for a simple workflow:
- list hosts from SSH config
- pick one or more hosts
- open a shell or run a command
You can still target a single host directly when you already know where to connect:
lssh -H my-serverFor more details about config formats and settings, see cmd/lssh/README.md.
Want to try lssh quickly with a ready-to-run local playground?
Start with demo/README.md.
For the telnet connector + multi-hop provider flow, use demo-telnet-provider/README.md.
lssh supports both your existing OpenSSH config and its own config format.
If you want to get started quickly, you can keep using ~/.ssh/config as-is. If you want richer host metadata and workflow-oriented settings, you can move to an lssh config instead.
You can also generate an lssh config from your existing SSH config:
lssh --generate-lssh-conf > ~/.lssh.tomlEven after moving to lssh config, you can still point it at your existing OpenSSH config and load hosts from there:
[sshconfig.default]
path = "~/.ssh/config"For more details about config formats and settings, see docs/configuration.md.
lssh can work with more than static SSH config entries.
Providers let it pull hosts from external inventory sources, resolve secrets just before connect, and use non-SSH connection backends such as cloud-managed connectors.
In v0.10.0, provider-backed inventory and secret workflows are best treated as beta.
Connector-backed access beyond native SSH is still experimental, especially for cloud-managed runtimes and non-SSH backends.
If you want to try provider-oriented flows locally, start from these demos:
- demo/README.md: core SSH, proxy chains, and general multi-host workflow examples
- demo-telnet-provider/README.md: provider-managed telnet connector flow, including direct telnet access and telnet behind a double SSH hop
For the provider architecture and protocol overview, start with provider/README.md. Category details are also documented under inventory, connector, secret, and mixed.
These provider implementations are currently bundled in this repository.
|
provider-inventory-proxmox Build host entries from Proxmox inventory. |
|
provider-connector-openssh Use OpenSSH-compatible connection handling as a provider-backed connector. |
provider-connector-telnet Reach telnet targets through the connector interface. |
provider-connector-winrm Run command execution workflows against WinRM targets. Interactive shell support is not available in v0.10.0. |
|
provider-mixed-aws-ec2 Combine EC2 inventory with AWS SSM and EC2 Instance Connect Endpoint connectors. Native SSH-adjacent flows are usable, while connector-specific behavior remains experimental. |
provider-mixed-azure-compute Build Azure Compute inventory with connector-aware access settings. |
provider-mixed-gcp-compute Build Google Compute Engine inventory with connector-aware access settings. |
|
provider-secret-bitwarden Resolve secret references from [Bitwarden](https://bitwarden.com/). |
provider-secret-onepassword Resolve secret references from [1Password](https://1password.com/). |
provider-secret-custom-script Resolve secret references through custom local scripts. |
|
provider-secret-os-keychain Resolve secret references from the local OS keychain. |
The lssh project includes multiple tools for SSH-centered workflows.
![]() lssh core / stableInteractive SSH access, parallel commands, and forwarding modes. |
![]() lscp transfer / stableSCP-style copy over SSH/SFTP, including remote-to-remote transfers. |
![]() lsftp transfer / stableInteractive SFTP shell for browsing and transferring files. |
![]() lsshell sysadmin / betaParallel interactive shell with broadcast and targeted commands. |
![]() lsmux sysadmin / betaPane-based SSH workspace for multi-host terminal workflows. |
![]() lsmon monitor / betaMulti-host monitoring UI over SSH without extra remote agents. |
![]() lssync transfer / betaTree sync over SSH/SFTP with daemon and bidirectional modes. |
![]() lsdiff sysadmin / betaCompare remote files from multiple hosts in a synchronized TUI. |
![]() lspipe sysadmin / alphaPersistent host sessions reusable from local pipelines and automation. |
lsshfstransfer / betaMount a remote directory through `FUSE on Linux` or `NFS on macOS`. |
- docs/README.md: documentation index
- cmd/lssh/README.md:
lsshcommand details, forwarding, and local rc usage - cmd/README.md: command overview
- CONTRIBUTING.md: development and contribution guidelines
- go-sshlib: Go library for SSH connections, command execution, and interactive shells
- tvxterm: tvxterm provides terminal widgets for tview
- boco: Bash Shell Function's Fuzzy Finder.
If you are evaluating lssh, these projects are also worth a look.
They overlap with parts of the suite, but each usually covers a narrower slice of the overall workflow.
| Project | Closest lssh command(s) |
Main focus | How it differs from lssh |
|---|---|---|---|
sshs |
lssh |
TUI-based SSH host picker | Similar in spirit to a focused host picker, but lssh also covers parallel execution, forwarding, mux workflows, and provider/connector-backed targets. |
ClusterSSH (cssh) |
lssh -P, lsmux, lsshell |
Multi-host interactive administration | Strong for broadcast typing into multiple terminals; lsshell and lsmux are a closer fit when you want synchronized shell workflows inside one suite. |
pssh |
lssh -p, lscp, lssync |
Parallel command execution and transfer tools | A good fit for parallel CLI jobs, while lssh adds TUI host selection, interactive workflows, and a more integrated multi-command toolset. |
tmuxinator |
lssh -P, lsmux |
tmux session layout management | Great for predefined tmux workspaces, but it is not an SSH host picker or transfer tool by itself. lsmux is SSH-oriented from the start. |
lsshcombines host selection, interactive SSH, parallel command execution, forwarding, and connector/provider-backed targets.lsshellfocuses on parallel interactive shell workflows instead of just launching many terminals.lscp,lsftp, andlssynccover file transfer and synchronization as first-class commands in the same suite.lsmuxprovides a pane-based SSH workspace rather than only session templating.lspipekeeps selected hosts reusable from local pipelines and automation.












