4 poin oleh emusal 2026-03-22 | 4 komentar | Bagikan ke WhatsApp

Sejak awal 2000-an saya membuat dan memakai alat otomatisasi SSH pribadi dengan skrip Bash + Expect.
Setelah menambalnya selama 20 tahun, akhirnya saya menulis ulang sepenuhnya dengan Go dan merilisnya sebagai open source.

https://github.com/emusal/alogin2

Masalah utama yang ingin diselesaikan: saat mengelola puluhan server dengan pengguna, port, jalur gateway, dan kredensial yang semuanya berbeda-beda — saya ingin menggunakannya dengan nyaman tanpa harus mengetik nama host lengkap setiap saat atau menyimpan kata sandi dalam bentuk teks polos.

Fitur utama:

  • TUI (Bubbletea) dengan pencarian fuzzy — tidak perlu mengetik seluruh nama host
  • Implementasi gateway multi-hop dengan SSH native Go (ProxyCommand tidak ada, tanpa expect).
    Jika AllowTcpForwarding dimatikan pada hop perantara, otomatis fallback ke shell chaining
  • Penyimpanan kredensial terenkripsi — kata sandi disimpan di macOS Keychain / Linux Secret Service /
    file terenkripsi age. Tidak pernah dicatat ke DB SQLite
  • Sesi cluster — koneksi serentak ke N server dengan tmux, iTerm2, Terminal.app
  • Web UI — terminal xterm.js berbasis WebSocket + dashboard manajemen server (alogin web)
  • Shell shim — perintah t, r, s, f, m dari skrip lama bisa tetap dipakai hanya dengan satu baris source

Stack yang digunakan: Go 1.23, Bubbletea, golang.org/x/crypto/ssh, chi, xterm.js (React)

Bagian paling menarik saat implementasi adalah SSH multi-hop.
golang.org/x/crypto/ssh memungkinkan hop berikutnya di-dial di atas sesi yang sudah ada, sehingga chaining N-hop bisa dilakukan tanpa proses terpisah. Yang paling rumit adalah saat bastion perantara memblokir TCP forwarding — mendeteksi kegagalan selama proses dial lalu menjalankan logika fallback untuk beralih ke metode shell chaining.

Pertanyaan atau masukan terkait implementasi sangat disambut.

4 komentar

 
nokdu 2026-03-22

Apakah belum mendukung Windows? sniff

 
emusal 2026-03-22

Saya belum sempat mencobanya karena tidak punya lingkungan Windows.

 
runableapp 2026-03-22

Akan lebih baik jika ada tangkapan layar penggunaan.

 
emusal 2026-03-22

Saya telah menambahkan tangkapan layar ke README. Terima kasih atas sarannya.