Voltar às atualizações
New releaseAug 20, 2026

sshroute v0.2.11

Roteador SSH consciente da rede - roteia conexões para diferentes IPs/portas/chaves/hosts de salto com base na VPN ou rede ativa

Compartilhar

sshroute

CI Código OpenSpec Segurança
CI
Release
OpenSpec Badge
Scorecard
Latest Release
codecov
Go Report Card
Go Reference
Specs
Requirements
Tasks
Open Changes
OpenSSF Scorecard
CII Best Practices
License: Apache 2.0

Roteador SSH ciente de rede. Detecta sua rede ativa ou VPN e seleciona automaticamente o host, porta, arquivo de identidade e host de salto corretos para cada conexão SSH — sem tocar no ~/.ssh/config.

Como funciona

Defina cada host lógico uma vez com um perfil default e substituições opcionais por rede. Em cada conexão, o sshroute detecta em qual rede você está (VPN, LAN do escritório, peer WireGuard, etc.) e resolve os parâmetros SSH corretos antes de passar para o /usr/bin/ssh real.

ssh myserver
  → sshroute detecta: corp-vpn está ativo
  → resolve: 10.100.0.50:2222 via bastion.corp.internal
  → exec /usr/bin/ssh -p 2222 -i ~/.ssh/corp_key -J bastion.corp.internal 10.100.0.50

Por que sshroute?

Para donos de homelab

Seu laboratório provavelmente tem pelo menos duas realidades: você está em casa na LAN, ou está fora e acessa via WireGuard ou outra VPN. O problema é que o ~/.ssh/config não sabe em qual você está — então você acaba com apelidos separados (server-lan, server-vpn), ou um host de salto que só funciona metade do tempo, ou você simplesmente memoriza IPs.

O sshroute resolve isso detectando sua rede atual antes de cada conexão. Quando a interface WireGuard está ativa e a rota do peer existe, ele conecta diretamente ao IP do túnel. Quando você está na LAN, ele usa o endereço local. Quando nenhum é alcançável, ele recai para o nome de host público. Um apelido, três realidades, zero troca manual.

Ele também intercepta SSH de forma transparente — git push, rsync, scp passam automaticamente por ele assim que você configura o modo sombra. Sem wrappers, sem funções de shell, sem pensar.

Para ambientes corporativos

Redes empresariais são piores. Você tem a internet pública, talvez uma VPN site-to-site, talvez uma VPN pessoal com split-tunnel, e dentro disso você tem diferentes hosts de salto dependendo de qual ambiente está mirando — dev, staging, produção, cada um com seu bastião e chave. Manter isso correto no ~/.ssh/config significa ou um arquivo enorme que quebra quando a infra muda, ou você escreve um script que cada pessoa da equipe mantém de forma diferente.

O sshroute permite que você defina a lógica de roteamento de forma declarativa, mantenha-a em um arquivo YAML versionado e compartilhe com a equipe. A mesma configuração funciona para todos — a rede correta é detectada automaticamente com base em quais interfaces ou rotas estão ativas em cada máquina. Chaves, portas, usuários e hosts de salto são resolvidos sem que o usuário precise pensar nisso.

Como se compara

Funcionalidade~/.ssh/configSomente WireGuardTeleport / Boundarysshroute
Detecta sua rede atual❌❌❌✅
Escolhe o melhor caminho automaticamente❌❌❌✅
Recai em caso de falha de conexão❌❌✅✅
Reconexão automática + re-roteamento ao cair❌⚠️ túnel faz roaming⚠️ via proxy fixo✅
Um comando por host, qualquer local❌⚠️ VPN precisa estar ativa✅✅
Tamanho da config para 10 hosts × 4 caminhos📄 ~600 linhas📄 ~600 linhas + config VPN📄 config no servidor📄 ~60 linhas
Dispositivos móveis em roaming⚠️ apelidos manuais⚠️ VPN necessária✅✅
Encadeamento automático de host de salto⚠️ -J manual➖ n/a✅✅
Funciona com scp / rsync / git / Ansible✅✅⚠️ parcial✅
Sem instalação no servidor nos alvos✅❌❌✅
Sem servidor de autenticação ou daemon para executar✅❌❌✅
Sem agente cliente✅❌❌✅
Código aberto, totalmente auto-hospedado✅✅⚠️ open-core✅

Teleport e Boundary são uma categoria diferente — eles adicionam controle de acesso, logs de auditoria e autenticação baseada em certificado sobre o roteamento. Se é isso que você precisa, use-os. O sshroute é para quando você quer a inteligência de roteamento sem a sobrecarga operacional de executar um servidor de autenticação central.

Instalação

Download do binário

Baixe a versão mais recente em GitHub Releases. Binários estão disponíveis para Linux, macOS e Android em AMD64 e ARM64.

Instalação via Go

go install github.com/thereisnotime/sshroute@latest

Android (Termux)

Baixe o pacote android_arm64 do GitHub Releases, extraia e coloque o binário em ~/.local/bin:

mkdir -p ~/.local/bin
curl -Lo "$TMPDIR/sshroute.tar.gz" \
  https://github.com/thereisnotime/sshroute/releases/latest/download/sshroute_android_arm64.tar.gz
tar -xzf "$TMPDIR/sshroute.tar.gz" -C ~/.local/bin sshroute
chmod +x ~/.local/bin/sshroute

Adicione ~/.local/bin ao seu PATH no ~/.bashrc ou ~/.profile se ainda não estiver:

Categorias