TUI para túneles AWS SSM y conexiones SSH a producción

Go 1.22+ macOS · Linux · Windows AWS SSM bubbletea

Instalación

Pega esto en tu terminal (detecta automáticamente Intel o Apple Silicon):

curl -fsSL https://mbaez-ctech.github.io/lazy-bastion/install.sh | bash

O para instalar una versión específica:

LZB_VERSION=1.2.0 curl -fsSL https://mbaez-ctech.github.io/lazy-bastion/install.sh | bash

Por defecto el binario queda en /usr/local/bin/lzb. Puedes cambiarlo:

LZB_INSTALL_DIR=~/bin curl -fsSL https://mbaez-ctech.github.io/lazy-bastion/install.sh | bash

Prerequisitos macOS

HerramientaInstalarNotas
AWS CLI v2aws.amazon.comRequerido para SSO
Session Manager Pluginaws.amazon.comTúneles SSM
lsofIncluido en macOSDetección de puertos
ssh-keygenIncluido en macOSGeneración de llaves

Abre PowerShell como usuario normal (no administrador) y ejecuta:

iwr https://mbaez-ctech.github.io/lazy-bastion/install.ps1 | iex

El binario se instala en %LOCALAPPDATA%\Programs\lzb\lzb.exe y se agrega al PATH del usuario automáticamente.

⚠ Política de ejecución
Si PowerShell bloquea el script, primero corre:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Para una versión específica:

$env:LZB_VERSION="1.2.0"; iwr https://mbaez-ctech.github.io/lazy-bastion/install.ps1 | iex

Prerequisitos Windows

HerramientaInstalarNotas
AWS CLI v2aws.amazon.com (MSI)Requerido para SSO
Session Manager Pluginaws.amazon.com (EXE)Túneles SSM
OpenSSHConfiguración → Apps → Características opcionalesssh-keygen
Windows TerminalMicrosoft StoreRecomendado para la TUI

Descarga el binario directamente desde GitHub Releases:

PlataformaArchivo
macOS Apple Siliconlzb-darwin-arm64
macOS Intellzb-darwin-amd64
Linux x86_64lzb-linux-amd64
Windows x64lzb-windows-amd64.exe

Luego hazlo ejecutable y muévelo al PATH:

# macOS / Linux
chmod +x lzb-darwin-arm64
sudo mv lzb-darwin-arm64 /usr/local/bin/lzb

Verificar la integridad con el archivo checksums.txt del release:

sha256sum -c checksums.txt --ignore-missing

Configuración

lzb busca config.yml en este orden:

  1. Variable de entorno LZB_CONFIG
  2. Junto al binario
  3. Directorio actual
  4. ~/.config/lazy-bastion/config.yml

config.yml de ejemplo

aws:
  region: us-west-1          # región de los recursos
  account_id: "123456789012" # cuenta AWS (para auto-detectar el perfil SSO)
  sso_start_url: "https://d-xxxxxx.awsapps.com/start"
  sso_region: us-east-1
  profile: ""                # vacío = auto-detectar
  ssh_key: "~/.ssh/wb-prod"  # llave Ed25519 (se genera automáticamente)

tunnels:
  - name: "MySQL principal"
    instance_id: "i-0abc123"
    remote_port: 3306
    local_port: 13306
    group: db-c1
    type: tcp               # tcp | http

servers:
  - name: "db-c1"
    label: "MySQL / Mongo / Redis"
    instance_id: "i-0abc123"
    tunnel_port: 2202        # puerto local efímero para SSH
    ssh_user: ubuntu
    private_ip: "172.31.5.49"

Variables de entorno

VariableEfecto
LZB_CONFIGRuta alternativa al config.yml
LZB_PROFILEFuerza un perfil AWS concreto

Uso

lzb

Al arrancar, la herramienta:

  1. Detecta el perfil AWS SSO que corresponde al account_id configurado.
  2. Valida la sesión SSO; si expiró, abre el navegador para hacer login.
  3. Lanza la TUI.
Permisos AWS requeridos: El usuario debe pertenecer al grupo SSO Admin_Tech o BastionAccess.

Atajos de teclado

/ k
Mover cursor arriba
/ j
Mover cursor abajo
/ Space
Túnel: toggle · Servidor: conectar SSH
d
Matar el túnel seleccionado
a
Abrir todos los túneles
x
Cerrar todos los túneles
q / Ctrl+C
Salir (cierra todos los túneles)

Logs

Cada túnel escribe su salida en:

/tmp/lzb-<puerto>.log        # túneles TCP/HTTP
/tmp/lzb-ssh-<nombre>.log   # túneles SSH