
TUI를 갖춘 향상된 SSH 클라이언트 — 연결, 키, 세션 관리
지속적인 세션과 실시간 상태 대시보드를 갖춘 SSH 워크스페이스.
연결이 끊겨도 원격 셸을 계속 실행하고, 키보드나 마우스로 호스트를 전환하며, 터미널을 벗어나지 않고 시스템 상태를 확인하세요. ESSH는 연결에 OpenSSH를 사용하고, 작업을 유지하기 위해 tmux를 사용합니다.
df와 lsblk로 디스크를 검사하고, ps로 사용 중인 프로세스를 찾고, vmstat으로 시스템 활동을 샘플링하며, ss와 ip로 소켓과 인터페이스를 확인하세요.
데모에서는 터미널 테마 전환, 측면·절반·전체 상태 보기, 세션 전환, 도움말, 그리고 끊긴 연결이 동일한 원격 셸을 복구하는 모습을 보여줍니다.
Releases에서 Linux 또는 macOS, x86_64 또는 ARM64용 바이너리를 다운로드하세요. 압축을 풀고 essh를 PATH 어딘가에 두세요.
로컬에 tmux 3.3+와 OpenSSH가 필요하고, 각 원격 호스트에 tmux가 필요합니다. 자세한 상태 지표는 Linux 호스트에서 사용할 수 있습니다.
또는 Rust로 소스에서 빌드하세요:
git clone https://github.com/matthart1983/essh.git
cd essh
cargo build --release
./target/release/essh
ESSH는 ~/.ssh/config, 자체 구성 파일, 그리고 호스트 캐시에서 호스트를 읽습니다.
예를 들어:
Host web-01
HostName 192.168.1.20
User deploy
IdentityFile ~/.ssh/id_ed25519
essh를 실행하고 호스트를 선택한 뒤 Enter를 누르세요. **/**로 호스트를 필터링하고 Esc로 필터를 지웁니다. a를 눌러 호스트를 추가하거나 e를 눌러 편집하세요.
OpenSSH가 인증과 호스트 키 검사를 처리합니다.
| 키 | 동작 |
|---|---|
| F1 | 도움말 열기 또는 닫기 |
| F2 | 터미널 → 측면 상태 → 절반 상태 → 전체 상태 → 터미널 순환 |
| F3 | 세션 열기; 세션을 선택하거나 n을 눌러 새 세션 시작 |
| F4 | 세션이 계속 실행되는 상태에서 메인 메뉴로 돌아가기 |
| F5 / F6 | 이전 / 다음 세션으로 전환 |
| Hosts에서 h | 선택한 호스트의 상태 열기 |
| 연결이 끊긴 후 r | 다시 연결 |
| Hosts에서 q | 원격 작업이 계속 실행되는 상태에서 ESSH 종료 |
세션 탭과 탐색 컨트롤을 클릭하여 보기를 전환하세요. 행을 클릭하여 선택하고, 더블클릭하여 연결하거나 전환하세요. 마우스 휠로 스크롤하고, 창을 클릭하여 포커스를 맞추고, 구분선을 드래그하여 크기를 조절하세요.
키보드의 기능 키 행이 밝기나 볼륨에 할당되어 있다면 F 키를 누를 때 Fn을 함께 누르거나, 키보드 설정에서 표준 기능 키를 활성화하세요. 탐색 컨트롤도 클릭할 수 있으며, F1에 사용 가능한 키 목록이 표시됩니다.
원격 세션은 원격 계정에 구성된 로그인 셸을 시작하고 해당 셸의 일반 시작 파일을 로드합니다—zsh, bash, fish 또는 그 계정이 사용하는 셸이 무엇이든 말이죠. 프롬프트, 별칭, 셸 키 바인딩은 해당 원격 계정에서 가져옵니다. 기존 셸은 다시 연결할 때 실행 상태를 유지합니다.
ESSH는 기본적으로 터미널의 색상을 사용합니다. 테마를 선택하여 셸의 전경색과 배경색을 대시보드와 함께 변경하세요:
essh --theme terminal
essh --theme netwatch
essh --theme light
메뉴나 상태 보기에서 t를 누르거나, 셸에서 Ctrl+A 후 t를 눌러 테마 선택기를 여세요. 화살표 키로 각 팔레트를 미리 보고, Enter 또는 클릭으로 적용하고 저장합니다. Esc는 기본 설정을 변경하지 않고 취소합니다.
Terminal, Netwatch, Light, Solarized, Dracula, Nord, Ocean, Sky 중에서 선택하세요. Netwatch는 숯색 배경에 청록색 제목과 녹색 미터를 사용합니다. 선택한 테마는 메뉴, 상태 보기, 탐색 바, 터미널 창 전체에 적용됩니다. 터미널의 기본 색상으로 되돌리려면 Terminal을 선택하세요. 프로그램과 프롬프트는 여전히 자체 색상을 설정할 수 있습니다.
기본 설정을 저장하려면 ~/.essh/config.toml 상단에 theme = "terminal"(또는 다른 테마 이름)을 설정하세요. 열려 있는 워크스페이스에 적용하려면 essh tmux refresh를 사용하세요; SSH 세션은 계속 실행됩니다. 글꼴과 글꼴 크기는 터미널 에뮬레이터가 제어합니다.
F2를 눌러 다음을 순환하세요:
| 보기 | 표시 내용 |
|---|---|
| 터미널 | 세션 및 탐색 바가 있는 셸 |
| 측면 상태 | 트래픽, CPU, 메모리, 디스크, 지연 시간이 표시되는 좁은 스트립 |
| 절반 상태 | 셸과 대시보드가 터미널을 공유 |
| 전체 상태 | 네트워크 트래픽, CPU 코어, 메모리, 스토리지, 피어, 프로세스 |
대시보드는 얇은 미터와 실시간 판독값을 사용합니다. 사용할 수 없는 판독값은 **—**로 표시되며, 연결이 끊긴 호스트는 명확히 표시됩니다. 좁은 터미널에서는 측면 레이아웃을 건너뜁니다.
대시보드에서:
바로 접근하려면 Ctrl+A를 누르고 떼고 나서, 전체 상태는 h, 측면 상태 → 절반 상태 → 끄기 순환은 m을 누르세요.
F3을 누르고 n을 눌러 또 다른 독립 세션을 여세요. F5 / F6, 세션 선택기, 또는 마우스로 전환하세요. F4는 세션을 종료하지 않고 호스트 목록으로 돌아갑니다.
세션 ID는 로컬 재시작 후에도 유지됩니다. 다시 연결하면 원격 셸이 아직 존재할 경우 재접속됩니다; 종료된 경우 ESSH는 새 셸을 시작합니다. 연결이 끊긴 세션의 원격 상태는 다시 연결할 때까지 확인되지 않은 상태로 남습니다.
Ctrl+A는 로컬 tmux를 제어합니다. Ctrl+B는 원격 호스트의 tmux를 제어합니다. 접두 키를 누르고 떼고 나서 다음 키를 누르세요:
| 키 | 동작 |
|---|---|
| Ctrl+B, 그다음 % | 원격 터미널을 좌우로 분할 |
| Ctrl+B, 그다음 " | 원격 터미널을 상하로 분할 |
| Ctrl+B, 그다음 화살표 | 원격 창 간 이동 |
| Ctrl+A, 그다음 v | 다음 키를 원격 애플리케이션에 직접 전송 |
| Ctrl+A, 그다음 x | 확인 후 원격 세션 종료 |
F1–F6은 ESSH용으로 예약되어 있습니다. 원격 애플리케이션에서 해당 키 중 하나가 필요하면 Ctrl+A 후 v를 사용하세요.
cargo fmt --check
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo build --release
ESSH_BIN=target/release/essh python3 scripts/test-tmux-v3.py
실시간 회귀 검사는 격리된 SSH 서버와 tmux 소켓을 사용합니다. 데모 녹화 및 검증에서 투어를 재현하는 방법을 설명합니다.
기여하려면 브랜치를 만들고, 변경 사항을 적용하고, 검사를 실행한 뒤 풀 리퀘스트를 여세요.