Every developer eventually faces the same challenge.
You might have a personal GitHub account, a work GitHub account, a few client projects, and several servers. Each one uses a different SSH key.
At first, it seems manageable.
Then one day, you push code using the wrong account.
Or GitHub suddenly rejects authentication because the wrong key is loaded.
Or you spend ten minutes trying to remember which SSH config entry belongs to which project.
I've encountered this more times than I’d like to admit.
After repeating the same manual steps over and over, I decided to create a small tool to simplify the process.
That’s how SSH Switch was developed.
The Problem
Managing multiple SSH identities isn’t difficult.
It’s annoying.
Most developers deal with it using a mix of:
-
~/.ssh/configI Got Tired of Managing Multiple SSH Keys, So I Built SSH Switch
ssh-addManual key generation
Terminal commands, they often forget
The workflow usually looks like this:
ssh-add ~/.ssh/work_key
ssh-add ~/.ssh/personal_key
ssh -T git@github.com
Or even worse:
nano ~/.ssh/config
Each time I switched contexts, I found myself opening terminal windows and editing configuration files.
The process works.
It’s just not pleasant.
What I Wanted
I wasn’t trying to reinvent SSH.
I wanted a tool that could:
- Generate SSH keys
- Hold multiple SSH identities
- Switch between them easily
- Work on different platforms
- Offer a clean interface instead of terminal commands
Most importantly, I wanted something I would actually enjoy using.
Building SSH Switch
For the frontend, I chose React and TypeScript.
For the desktop application, I used Tauri.
For the backend, I relied on Rust.
This combination gave me several advantages:
- Small application size
- Native performance
- Low memory use
- Secure access to filesystem operations
Tauri was a great choice because SSH management requires interacting with files on the user’s machine, and Rust offers a safe way to handle those operations.
Features
SSH Switch provides everything needed to manage multiple SSH identities from a single interface:
- Generate new SSH keys (Ed25519/RSA)
- Import existing SSH keys
- Manage multiple SSH identities in one place
- Switch active SSH keys with a single click
- View and organize all configured keys
- Copy public keys instantly
- Delete unused SSH keys safely
- Modern desktop UI built with Tauri, React, and Rust
- Lightweight and fast with minimal resource usage
- Mac & Linux Support
- Open source and community-driven
Why Open Source?
I believe developer tools improve when developers can inspect, question, and contribute to them.
SSH is part of our daily workflow.
Making the code public allows others to:
- Review implementation details
- Suggest improvements
- Report issues
- Contribute new features
Open source also helps confirm whether the problem is worth solving.
If other developers find the tool useful, that’s a strong sign that the issue is real.
Try It Out
SSH Switch is completely open source.
GitHub Repository:
https://github.com/therohanparmar/ssh-switch
I welcome your feedback, issues, and contributions.
Top comments (0)