alogin – TUI, मल्टी-हॉप गेटवे और एन्क्रिप्टेड स्टोरेज के साथ SSH एक्सेस मैनेजमेंट टूल (Go)
(github.com/emusal)2000 के दशक की शुरुआत से मैं व्यक्तिगत SSH automation टूल Bash + Expect script से बनाकर इस्तेमाल करता रहा हूँ.
20 साल तक patch करते-करते आखिरकार इसे पूरी तरह Go में फिर से लिखा और open source के रूप में जारी किया.
https://github.com/emusal/alogin2
मुख्य समस्या यह थी: जब दर्जनों सर्वरों को अलग-अलग user, port, gateway path और credentials के साथ manage करना हो — तब हर बार पूरा hostname टाइप किए बिना या password को plaintext में store किए बिना इसे सुविधाजनक तरीके से इस्तेमाल करना चाहता था.
मुख्य फीचर्स:
- TUI (Bubbletea) fuzzy search — पूरा hostname टाइप करने की ज़रूरत नहीं
- Go native SSH से मल्टी-हॉप गेटवे implementation (ProxyCommand नहीं, expect नहीं).
अगर बीच वाले hop पर AllowTcpForwarding बंद हो, तो shell chaining पर अपने-आप fallback - एन्क्रिप्टेड credentials storage — password को macOS Keychain / Linux Secret Service /
age encrypted file में रखा जाता है. SQLite DB में कभी दर्ज नहीं होता - cluster session — tmux, iTerm2, Terminal.app के साथ एक साथ कई सर्वरों से कनेक्ट
- Web UI — WebSocket-आधारित xterm.js terminal + server management dashboard (
alogin web) - shell shim — मौजूदा scripts के t, r, s, f, m commands को एक लाइन
sourceसे उसी तरह इस्तेमाल किया जा सकता है
इस्तेमाल किया गया स्टैक: Go 1.23, Bubbletea, golang.org/x/crypto/ssh, chi, xterm.js (React)
implementation के दौरान सबसे दिलचस्प हिस्सा मल्टी-हॉप SSH था.
golang.org/x/crypto/ssh मौजूदा session के ऊपर अगला hop dial करने देता है, इसलिए अलग process के बिना N-hop chaining संभव है. मुश्किल हिस्सा तब था जब बीच का bastion TCP forwarding को block कर रहा हो — dial के दौरान failure detect करके shell chaining तरीके पर switch करने वाली fallback logic थी.
implementation से जुड़े सवाल या feedback का स्वागत है.
4 टिप्पणियां
क्या Windows support नहीं है? T_T
मेरे पास Windows environment नहीं है, इसलिए मैं इसे आज़मा नहीं सका।
अगर उपयोग का स्क्रीनशॉट हो तो अच्छा रहेगा।
README में screenshot जोड़ दिया है। सलाह के लिए धन्यवाद।