switcher-ssh
v1.1.1
Published
CLI para gerenciar múltiplos perfis SSH e configurações Git
Maintainers
Readme
Switcher SSH
CLI para gerenciar múltiplos perfis SSH e configurações Git. Troque entre contas pessoais e de trabalho com um comando — e retome o último perfil automaticamente ao abrir o terminal.
Instalação
Uso global no terminal (recomendado)
# Opção 1: instalar do npm (produção)
npm install -g switcher-ssh
# Opção 2: instalar a partir do código local (desenvolvimento)
cd /caminho/para/sshx
npm install
npm run setupO npm run setup:
- Configura
~/.ssh, perfis e template Git - Registra o comando
sshxglobalmente vianpm link - Adiciona ao
~/.zshrca restauração automática do último perfil ao abrir o terminal
Para remover o link global:
npm run unlinkCaracterísticas
- Múltiplos perfis SSH com uma chave exclusiva por perfil
- Configuração Git (nome e e-mail) por perfil
- Geração de chave SSH integrada no cadastro
- Menu interativo contínuo (não fecha após cada ação)
- Perfil padrão: lembra o último usado e restaura ao reiniciar o notebook
- Comando
showpara copiar a chave pública - Comando
clearpara remover chaves externas dossh-agent - Suporte ao keychain do macOS (
--apple-use-keychain) - Teste de conexão com GitHub ao trocar perfil
Menu interativo
sshx| Opção | Descrição | |-------|-----------| | Adicionar | Cadastra um novo perfil | | Trocar | Ativa outro perfil e lista o resultado | | Remover | Remove um perfil | | Listar | Exibe todos os perfis | | Mostrar ativo | Exibe a chave pública do perfil ativo | | Limpar Chaves | Remove chaves do agent que não pertencem ao sshx | | Sair | Encerra o menu |
Comandos
Adicionar perfil
sshx add
# ou
sshx --addO fluxo pede nome, e-mail/nome Git e a chave SSH. Se não houver chave livre, gera uma automaticamente (id_ed25519_<nome-do-perfil>).
Trocar perfil
sshx liniker
# ou
sshx switch linikerRemover perfil
sshx reset linikerListar perfis
sshx profilesExemplo de saída:
liniker ○ inativo
edglobo ● ativo ★ padrão● ativo— perfil Git configurado globalmente e chave carregada★ padrão— último perfil usado (restaurado ao abrir o terminal)
Exibir chave pública
sshx show # perfil ativo
sshx show edglobo # perfil específicoCopie a linha ssh-ed25519 ... e cadastre no GitHub, GitLab, Bitbucket, etc.
Limpar chaves externas
sshx clearRemove do ssh-agent chaves que não estão cadastradas em nenhum perfil sshx.
Restaurar último perfil
sshx restore
sshx restore --quiet # silencioso (usado no ~/.zshrc)Útil após reiniciar o notebook, quando o ssh-agent perde as chaves carregadas.
Listar arquivos em ~/.ssh
sshx listPerfil padrão (restauração automática)
Ao trocar ou adicionar um perfil, o sshx salva em ~/.ssh/sshx-state.json:
{
"lastProfile": "edglobo",
"updatedAt": "2026-06-09T14:59:38.413Z"
}Com o hook no ~/.zshrc (configurado pelo npm run setup), ao abrir um terminal:
- A chave do perfil padrão é recarregada no
ssh-agent - O
.gitconfigglobal aponta para as configurações desse perfil
Para reconfigurar manualmente, adicione ao ~/.zshrc:
# sshx — restaurar último perfil SSH ao abrir o terminal
if command -v sshx >/dev/null 2>&1; then
sshx restore --quiet
fiExemplo: pessoal + trabalho
# 1. Perfil pessoal (usa chave existente ou gera nova)
sshx add # nome: liniker
# 2. Perfil trabalho (gera id_ed25519_edglobo automaticamente se não houver chave livre)
sshx add # nome: edglobo
# 3. Cadastrar chaves nos respectivos GitHubs
sshx show liniker
sshx show edglobo
# 4. Trocar quando precisar
sshx liniker
sshx edgloboComo funciona
Cada perfil associa:
- Um arquivo de chave privada em
~/.ssh - Um arquivo Git em
~/.ssh/git-configs/<perfil>.gitconfig - Uma entrada em
~/.ssh/ssh-profiles.json
Ao trocar de perfil, o sshx:
- Limpa as chaves do
ssh-agent - Carrega a chave do perfil selecionado
- Atualiza
git config --global include.pathpara o perfil - Salva o perfil como padrão
- Testa a conexão com o GitHub (exceto no cadastro)
Arquivos criados
| Arquivo / pasta | Descrição |
|-----------------|-----------|
| ~/.ssh/ssh-profiles.json | Mapa perfil → caminho da chave |
| ~/.ssh/sshx-state.json | Último perfil usado (padrão) |
| ~/.ssh/git-configs/ | Configurações Git por perfil |
| ~/.ssh/git-configs/default.gitconfig | Aliases e defaults compartilhados |
A pasta
~/.ssh/agentnão é criada pelo sshx — é do OpenSSH no macOS.
Solução de problemas
Nenhuma chave livre ao adicionar perfil
Cada perfil precisa de sua própria chave. O sshx gera automaticamente se não houver chave disponível. Também é possível gerar manualmente:
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_trabalho
sshx addGitHub: Permission denied (publickey)
A chave ainda não foi cadastrada no GitHub. Rode sshx show <perfil>, copie a chave pública e adicione em Settings → SSH keys.
Dois perfis com a mesma chave
Não é suportado. Dois perfis com o mesmo arquivo de chave compartilham a mesma autenticação SSH — só o Git (nome/e-mail) muda. Use chaves separadas para contas separadas.
ssh-agent não está rodando
eval "$(ssh-agent -s)"
sshx restoreRequisitos
- Node.js >= 16
- Git instalado
- macOS ou Linux (Windows experimental)
Licença
MIT
