가볍다
UI 프레임워크를 쓰지 않습니다. 번들 크기가 곧 시작 시간이기 때문입니다. Rust 엔진 + 시스템 웹뷰라 무거운 런타임을 따로 깔지 않아도 됩니다.
luSSH는 MobaXterm을 대체하려고 만드는 SSH 클라이언트입니다. Rust + Tauri v2로 만들어서 가볍고, 빠르고, 무엇보다 끊겼을 때 끊긴 걸 알려줍니다.
기존 도구는 기능은 많지만 무겁고, 연결이 끊겨도 끊긴 줄 모르는 좀비 세션이 남습니다. luSSH는 기능을 늘리는 대신 측정 가능한 목표를 정해두고 거기에 맞춥니다.
UI 프레임워크를 쓰지 않습니다. 번들 크기가 곧 시작 시간이기 때문입니다. Rust 엔진 + 시스템 웹뷰라 무거운 런타임을 따로 깔지 않아도 됩니다.
터미널 출력은 JSON이 아니라 바이너리 채널로 흐릅니다. 10MB가 쏟아져도 한 바이트도 흘리지 않고, 그 와중에도 UI는 계속 반응합니다.
핵심은 여기입니다. 에러가 적다는 말의 실질은 기능이 아니라 실패했을 때의 동작입니다. 좀비 세션·무한 대기·조용한 실패를 없앱니다.
포트 포워딩·X11·RDP는 MVP 범위 밖입니다. 확장 지점만 열어뒀습니다.
탭과 분할, 스크롤백, 검색. xterm.js 위에 WebGL 렌더러를 얹었습니다.
서버가 늘어나도 찾는 데 시간이 안 걸리도록. 폴더 트리와 태그로 정리합니다.
로컬과 원격을 나란히 놓고 드래그로 옮깁니다. 취소하면 부분 파일까지 정리합니다.
비밀번호를 앱이 직접 들고 있지 않습니다. OS 자격증명 저장소에 위임합니다.
아래 항목은 전부 실제 SSH 서버(Docker 컨테이너)를 상대로 한 통합 테스트로 확인한 동작입니다.
아래는 지켜야 할 예산이지 광고 문구가 아닙니다. Windows 실측이 끝나면 이 표에 실제 측정값이 함께 올라갑니다.
| 항목 | 목표 | 상태 |
|---|---|---|
| 콜드 스타트 → 창 표시 | < 1.5s | 측정 대기 |
| 세션 연결 (LAN) | < 800ms | 측정 대기 |
| 10MB 출력 처리 | 드롭 0 | 엔진 검증됨 |
| 유휴 메모리 (탭 1개) | < 150MB | 측정 대기 |
| 탭 10개 메모리 | < 400MB | 측정 대기 |
| 설치 바이너리 크기 | < 30MB | 측정 대기 |
무료 오픈소스입니다. 계정도, 텔레메트리도 없습니다.
64-bit (x64) · 설치 프로그램
지금 바로 실행해 보고 싶다면
# 사전 준비: Rust · Node 20+ · VS Build Tools (C++)
git clone https://github.com/tbop02k/luSSH.git
cd luSSH
npm install
npm run tauri dev
npm run tauri buildnpm test (Rust + 프론트)검증한 것과 하지 않은 것을 구분해서 적습니다. 그 구분이 흐려지면 결국 사용자가 대신 발견하게 되니까요.
russh — Tauri에 의존하지 않는 별도 크레이트
엔진(lussh-core)이 Tauri와 분리되어 있어, GUI가 없는 환경에서도
cargo test로 실제 SSH 서버를 상대로 검증할 수 있습니다.
기능 개수로는 못 이깁니다. luSSH는 매일 쓰는 네 가지(터미널·세션·SFTP·자격증명)만 남기고, 대신 가볍고 실패 동작이 명확한 것에 집중합니다. X11이나 RDP가 필요하다면 아직 MobaXterm이 맞습니다.
Windows가 1순위입니다. Linux는 그다음이고, 코드는 이미 크로스 플랫폼으로 짜여 있습니다. macOS는 계획에 없지만 구조상 막혀 있지는 않습니다.
앱이 직접 보관하지 않고 OS 자격증명 저장소(Windows 자격증명 관리자)에 위임합니다.
저장소에 접근할 수 없으면 이번 실행에만 기억한다고 화면에 명시하고,
저장된 것처럼 보이게 하지 않습니다. 호스트 키는 known_hosts로 검증합니다.
없습니다. 네트워크 연결은 사용자가 지정한 SSH 서버로만 나갑니다.
아직 정하지 않았습니다. 정해지면 저장소와 이 페이지에 함께 표기합니다.
GitHub Issues에 남겨주세요. 재현 절차와 환경(Windows 버전, 접속 대상 서버 종류)이 있으면 훨씬 빠릅니다.