← back to /blog← powrót do /blog

→ read in english

sshmgr poszedł w świat (i po co go w ogóle pisałem)

Lata łatania ~/.ssh/config i pisania jednorazowych bashy żeby ogarniać setki hostów za jumphostami, Duo MFA i wielokrotnym sudo. Termius i mRemoteNG są ciężkie i każą się logować, żeby używać własnego laptopa. Minimalne TUI są spoko, ale zwykle robią tyle co cat ~/.ssh/config | menu. Więc usiadłem i napisałem sshmgr — manager SSH gdzieś pomiędzy.

Co robi

  • CLI + TUI w jednym Go binary. Domyślnie sshmgr <alias> wpada w shell. sshmgr ui otwiera drzewo hostów z live statusami.
  • Sekwencje logowania z OS keyring. su - deployersudo su - z hasłami z libsecret / macOS Keychain, env varów, custom commandów albo z promptu. Każdy krok ma własny resolver.
  • Port forwarding (-L / -R / -D SOCKS5), X11, agent forwarding — wszystko przez ten sam łańcuch (proxy_jump, jumphosty, dowolny auth backend).
  • Wbudowany SCP / SFTP / 2-panelowy file manager — żadnego WinSCP obok, żadnego drugiego connect chainu do utrzymania.
  • Parallel exec po flocie. sshmgr exec --group fleet 'uptime' — bounded concurrency, prefixowany output, pass/fail, --retry, --diff, --json.
  • Integracja z Ansible. export ansible wypluwa flotę jako inventory (sam ogarnia bastiony i proxy hopy); playbook puszcza ansible-playbook na dowolnym selektorze.
  • sshmgr lint — wyłapie zepsute proxy_jump, brakujące klucze, kolizje snippetów i niezdefiniowane grupy, zanim trafisz na to przy próbie połączenia.

Jeden plik Go. Zero usług, zero demonów, zero kont, zero telemetrii.

Czym nie jest

  • Nie SaaS. Nic nie wychodzi z Twojej maszyny.
  • Nie zastępuje ssh — pod spodem siedzi golang.org/x/crypto/ssh, a dla hostów oznaczonych external: true systemowy ssh.
  • Nieprzetestowany na Windowsie. W teorii działa; nikt z testów nie siedzi na Windowsie.

Gdzie żyje

— Paweł


← back to /blog← powrót do /blog

→ read in english