2000년대 초부터 개인용 SSH 자동화 도구를 Bash + Expect 스크립트로 만들어 써왔습니다. https://github.com/emusal/alogin2 핵심 문제 의식: 수십 대 서버를 사용자, 포트, 게이트웨이 경로, 자격증명이 주요 기능: 사용 스택: Go 1.23, Bubbletea, golang.org/x/crypto/ssh, chi, xterm.js (React) 구현 중 가장 흥미로웠던 부분은 멀티홉 SSH였습니다. 구현 관련 질문이나 피드백 환영합니다.
20년간 패치하다가 결국 Go로 완전히 재작성해서 오픈소스로 공개했습니다.
제각각인 상태로 관리할 때 — 호스트명을 매번 전부 타이핑하거나 비밀번호를
평문으로 저장하지 않고 편하게 쓰고 싶었습니다.
중간 홉에서 AllowTcpForwarding이 꺼져 있으면 셸 체이닝으로 자동 폴백
age 암호화 파일에 보관. SQLite DB에는 절대 기록되지 않음
golang.org/x/crypto/ssh는 기존 세션 위에서 다음 홉을 dial할 수 있어서
별도 프로세스 없이 N홉 체이닝이 가능합니다. 까다로웠던 건 중간 배스천이
TCP 포워딩을 막고 있을 때 — dial 도중 실패를 감지하고 셸 체이닝 방식으로
전환하는 폴백 로직이었습니다.

6 days ago
7







English (US) ·