Bast.sh/PuTTY
Bast vs PuTTY
PuTTY defined desktop SSH for a generation of Windows operators. Bast is what that job looks like when you live in the terminal and want OpenSSH to stay in charge.
| Topic | Bast | PuTTY |
|---|---|---|
| Platform | macOS, Linux, and Windows 11 terminals | Classic Windows desktop app (ports exist elsewhere) |
| SSH stack | System OpenSSH binary | PuTTY's own SSH stack and .ppk keys |
| Sessions | ~/.ssh/config plus Bast metadata | Saved PuTTY sessions in the registry or files |
| Keys | Standard OpenSSH key files | .ppk via PuTTYgen; conversion needed for OpenSSH tools |
| Cloud hosts | CLIs for GCP, AWS, Azure, and Box; APIs for Hetzner, Upstash, and Vercel | Not built in |
| File transfers | Dual-pane SFTP in the same TUI | Separate PSCP / PSFTP tools |
| Automation | CLI with stable --json output | Mostly interactive desktop workflows |
| Price | Free and open source (MIT) | Free |
Different eras, different defaults
PuTTY solved a real problem: Windows needed a trustworthy SSH client when OpenSSH was not part of the OS story. Sessions, terminals, and key handling lived inside one desktop app, and that model still works for a lot of Windows shops.
Bast starts from the opposite default. OpenSSH is already available across its supported platforms. The missing piece is not another SSH implementation. It is a fast way to browse, organize, and connect to the hosts your config already knows.
Sessions vs SSH config
PuTTY sessions are a product database. Hostnames, ports, usernames, and key choices live in PuTTY's world. Other tools do not automatically share that inventory.
Bast keeps connection settings in ~/.ssh/config. That means the same hosts work in your shell, VS Code Remote, Cursor, Ansible, CI jump boxes, and Bast itself. Presentation metadata (groups, tags, notes, colors) sits beside that config instead of replacing it.
Keys without the .ppk detour
PuTTY's .ppk format made sense inside its ecosystem. It is awkward everywhere else. Teams spend real time converting keys so OpenSSH tools, cloud metadata, and agent forwarding all agree.
Bast generates, imports, and installs native OpenSSH keys on disk. No proprietary key store, no conversion tax when the rest of your stack already speaks OpenSSH.
One surface for hosts, keys, files, and cloud
With PuTTY you often juggle the session list, PuTTYgen, and separate PSCP/PSFTP binaries. Bast keeps the host picker, key manager, dual-pane SFTP, and cloud imports in one terminal UI that still hands off connections to system ssh.
Cloud sync pulls live hosts from GCP, AWS, Azure, and box.ascii.dev through provider CLIs, and from Hetzner Cloud, Upstash Box, and Vercel Sandbox over their APIs. That is a different job from saving a static PuTTY session for a box you typed in by hand.
When PuTTY is still the better choice
Keep PuTTY (or a Windows-native peer) if:
- You need a mature graphical Windows SSH client rather than a terminal TUI.
- Your org standardizes on PuTTY sessions and .ppk keys as policy.
- You only need occasional ad-hoc SSH and do not care about shared OpenSSH config.
- You want a classic Windows GUI terminal rather than a terminal-native TUI.
Bast is the OpenSSH-native answer for people who work in the terminal. PuTTY remains the better fit for its established GUI and session ecosystem.
Moving from PuTTY sessions to Bast
- Convert important .ppk keys to OpenSSH format and place them under
~/.ssh(or import them with Bast's key tools). - Recreate sessions as OpenSSH host blocks in
~/.ssh/config(Host, HostName, User, Port, IdentityFile, ProxyJump). - Install Bast on macOS, Linux, or Windows 11. It discovers existing config and adds one managed Include for hosts you create inside Bast.
- Use Files for SFTP and cloud sync when inventory should come from the provider instead of a static session list.
Install Bast
One command. Then run bast and connect with the OpenSSH you already trust.
curl -fsSL https://bast.sh/install | shLatest release v0.10.2
Prefer the short version? See the Bast homepage or read the docs.