bssh - Broadcast SSH
) [](https://deps.rs/repo/github/lablup/bssh)
A high-performance SSH client with SSH-compatible syntax for both single-host and parallel cluster operations, built with Rust and russh.
Developed and maintained as part of the Backend.AI project.
Recent Updates
- v2.3.1 (2026/07/29): Restore keyboard protocols leaked by disconnected PTY applications, preserve an outer TUI's keyboard state, raise the MSRV and Debian/Launchpad toolchain to Rust 1.96, and make Homebrew formula updates safer (#231, #232, #233, #235, #237).
- v2.3.0 (2026/07/18): Roughly double bssh-server SFTP write throughput, fix the paramiko prefetch deadlock (with TCPNODELAY), make sftp.root/scp.root chroot usable, make server SSH compression configurable, and drop the vendored bssh-russh fork for upstream russh 0.62.1 (#187, #212, #214, #215, #227).
- v2.2.3 (2026/05/25): Sync both internal russh forks to upstream stable and patch RUSTSEC-2026-0009 (a time stack-exhaustion DoS), raising the minimum supported Rust to 1.88 (#207, #208).
- v2.2.2 (2026/05/25): Keep idle SSH sessions alive by lowering the default --server-alive-interval to 30s and leaving the client inactivity timeout disabled (#206).
- v2.2.1 (2026/05/19): Dependency upgrade pass and russh fork sync picking up both halves of CVE-2026-46673, plus a bssh-russh dev-deps fix so its inline tests compile (#203, #204, #205).
- v2.2.0 (2026/05/18): Collect --password once and share it across parallel tasks, add BSSHPASSWORD, resolve all cargo-audit findings, and drop five redundant dependencies (#198, #199, #200, #201).
- v2.1.4 (2026/05/10): Stream SFTP transfers in 255 KiB chunks (~160x lower memory, ~11x faster 1 GiB upload) and pipeline up to 64 concurrent requests (#195, #196, #197).
- v2.1.3 (2026/04/30): Fix SCP/SFTP path doubling and chroot config, vendor russh-sftp with a serdebytes perf fix (+29% upload), and forward-port unreleased upstream russh fixes (#186).
See CHANGELOG.md for the complete version history.
Features
- SSH Compatibility: Drop-in replacement for SSH with compatible command-line syntax
- Port Forwarding: Full support for local (-L), remote (-R), and dynamic (-D) SSH port forwarding
- Jump Host Support: Connect through bastion hosts using OpenSSH ProxyJump syntax (-J)
- Parallel Execution: Execute commands across multiple nodes simultaneously
- Hostlist Expressions: pdsh-style range expansion (node[1-5], rack[1-2]-node[1-3]) for compact host specification
- Fail-Fast Mode: Stop immediately on first failure with -k flag (pdsh compatible)
- Interactive Terminal UI (TUI): Real-time monitoring with 4 view modes (Summary/Detail/Split/Diff) for multi-node operations
- Cluster Management: Define and manage node clusters via configuration files
- Progress Tracking: Real-time progress indicators with smart detection (percentages, fractions, apt/dpkg)
- Flexible Authentication: Support for SSH keys, SSH agent, password authentication, and encrypted key passphrases
- Host Key Verification: Secure host key checking with knownhosts support
- Cross-Platform: Works on Linux and macOS (see Platform Support for Windows status)
- Output Management: Multiple output modes (TUI, stream, file, normal) with auto-detection
- Interactive Mode: Interactive shell sessions with single-node or multiplexed multi-node support
- SSH Config Caching: High-performance caching of SSH configurations with TTL and file modification detection
- Configurable Timeouts: Set both connection timeout (--connect-timeout) and command execution timeout (--timeout) with support for unlimited execution
- SSH Keepalive: Configurable keepalive settings (--server-alive-interval, --server-alive-count-max) to prevent idle connection timeouts
Platform Support
- Linux and macOS: Fully supported, including SSH agent authentication (-A), PTY-based interactive sessions, and every CLI feature documented here.
- Windows (native): Not currently supported as a client. The bssh crate does not build for a Windows target today because of unconditional Unix-only dependencies (nix, signal-hook, libc) and un-gated PTY/agent code; there is no Windows CI job or release artifact. Use WSL2 to run bssh on Windows in the meantime. See #213 for the current status and the known blockers to native Windows client support.
Installation
Install via Homebrew (macOS/Linux)
The easiest way to install bssh on macOS and Linux is through Homebrew:
brew tap lablup/tap
brew install bssh