<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rohan Parmar</title>
    <description>The latest articles on DEV Community by Rohan Parmar (@rohan-parmar).</description>
    <link>https://dev.to/rohan-parmar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4010331%2Fe99282de-4196-41e2-a6e9-b3baafe57638.png</url>
      <title>DEV Community: Rohan Parmar</title>
      <link>https://dev.to/rohan-parmar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rohan-parmar"/>
    <language>en</language>
    <item>
      <title>SSH Switch: A Lightweight Open-Source SSH Key Manager</title>
      <dc:creator>Rohan Parmar</dc:creator>
      <pubDate>Wed, 01 Jul 2026 08:00:00 +0000</pubDate>
      <link>https://dev.to/rohan-parmar/ssh-switch-a-lightweight-open-source-ssh-key-manager-me</link>
      <guid>https://dev.to/rohan-parmar/ssh-switch-a-lightweight-open-source-ssh-key-manager-me</guid>
      <description>&lt;p&gt;Every developer eventually faces the same challenge.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;At first, it seems manageable.&lt;/p&gt;

&lt;p&gt;Then one day, you push code using the wrong account.&lt;/p&gt;

&lt;p&gt;Or GitHub suddenly rejects authentication because the wrong key is loaded.&lt;/p&gt;

&lt;p&gt;Or you spend ten minutes trying to remember which SSH config entry belongs to which project.&lt;/p&gt;

&lt;p&gt;I've encountered this more times than I’d like to admit.&lt;/p&gt;

&lt;p&gt;After repeating the same manual steps over and over, I decided to create a small tool to simplify the process.&lt;/p&gt;

&lt;p&gt;That’s how SSH Switch was developed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Managing multiple SSH identities isn’t difficult.&lt;/p&gt;

&lt;p&gt;It’s annoying.&lt;/p&gt;

&lt;p&gt;Most developers deal with it using a mix of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;~/.ssh/config&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I Got Tired of Managing Multiple SSH Keys, So I Built SSH Switch&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ssh-add&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manual key generation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Terminal commands, they often forget&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The workflow usually looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-add ~/.ssh/work_key
ssh-add ~/.ssh/personal_key

ssh &lt;span class="nt"&gt;-T&lt;/span&gt; git@github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or even worse:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.ssh/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each time I switched contexts, I found myself opening terminal windows and editing configuration files.&lt;/p&gt;

&lt;p&gt;The process works.&lt;/p&gt;

&lt;p&gt;It’s just not pleasant.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Wanted
&lt;/h2&gt;

&lt;p&gt;I wasn’t trying to reinvent SSH.&lt;/p&gt;

&lt;p&gt;I wanted a tool that could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate SSH keys&lt;/li&gt;
&lt;li&gt;Hold multiple SSH identities&lt;/li&gt;
&lt;li&gt;Switch between them easily&lt;/li&gt;
&lt;li&gt;Work on different platforms&lt;/li&gt;
&lt;li&gt;Offer a clean interface instead of terminal commands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, I wanted something I would actually enjoy using.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building SSH Switch
&lt;/h2&gt;

&lt;p&gt;For the frontend, I chose React and TypeScript.&lt;/p&gt;

&lt;p&gt;For the desktop application, I used Tauri.&lt;/p&gt;

&lt;p&gt;For the backend, I relied on Rust.&lt;/p&gt;

&lt;p&gt;This combination gave me several advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Small application size&lt;/li&gt;
&lt;li&gt;Native performance&lt;/li&gt;
&lt;li&gt;Low memory use&lt;/li&gt;
&lt;li&gt;Secure access to filesystem operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;SSH Switch provides everything needed to manage multiple SSH identities from a single interface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate new SSH keys (Ed25519/RSA)&lt;/li&gt;
&lt;li&gt;Import existing SSH keys&lt;/li&gt;
&lt;li&gt;Manage multiple SSH identities in one place&lt;/li&gt;
&lt;li&gt;Switch active SSH keys with a single click&lt;/li&gt;
&lt;li&gt;View and organize all configured keys&lt;/li&gt;
&lt;li&gt;Copy public keys instantly&lt;/li&gt;
&lt;li&gt;Delete unused SSH keys safely&lt;/li&gt;
&lt;li&gt;Modern desktop UI built with Tauri, React, and Rust&lt;/li&gt;
&lt;li&gt;Lightweight and fast with minimal resource usage&lt;/li&gt;
&lt;li&gt;Mac &amp;amp; Linux Support&lt;/li&gt;
&lt;li&gt;Open source and community-driven&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Open Source?
&lt;/h2&gt;

&lt;p&gt;I believe developer tools improve when developers can inspect, question, and contribute to them.&lt;/p&gt;

&lt;p&gt;SSH is part of our daily workflow.&lt;/p&gt;

&lt;p&gt;Making the code public allows others to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review implementation details&lt;/li&gt;
&lt;li&gt;Suggest improvements&lt;/li&gt;
&lt;li&gt;Report issues&lt;/li&gt;
&lt;li&gt;Contribute new features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open source also helps confirm whether the problem is worth solving.&lt;/p&gt;

&lt;p&gt;If other developers find the tool useful, that’s a strong sign that the issue is real.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;SSH Switch is completely open source.&lt;/p&gt;

&lt;p&gt;GitHub Repository:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/therohanparmar/ssh-switch" rel="noopener noreferrer"&gt;https://github.com/therohanparmar/ssh-switch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I welcome your feedback, issues, and contributions.&lt;/p&gt;

</description>
      <category>ssh</category>
      <category>developertool</category>
      <category>opensource</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
