HanTerm 사용 설명서

한글 입력이 잘 되는 안드로이드 SSH 터미널

← HanTerm 소개 · 앱 버전 1.4.35 기준 · 앱 화면은 영어로 표시됩니다 (이 설명서에서는 파란 글씨가 앱의 메뉴·버튼 이름입니다)

바로 찾기: 작업 화면 복원 · tmux로 작업 유지 · 시작 광고 · Play 설치 문제

1.4.31 설치 안내: 패키지가 org.d32.hanterm으로 변경되어 기존 앱과 별도로 설치됩니다. 기존 앱 설정에서 Export backup 후 새 앱에서 Import backup으로 연결 정보를 옮기세요. 기존 앱의 데이터는 자동 이전되지 않습니다.

1시작하기

  1. 비공개 테스트 참여 안내를 엽니다. 휴대폰의 Play 스토어와 같은 Google 계정으로 Google 그룹에 가입합니다. 그룹 링크를 여는 것만으로 가입되지는 않습니다. 그룹 화면의 가입 버튼을 눌러 완료하세요.
  2. 가입 후 안내 페이지로 돌아와 테스트 참여하기를 누릅니다. 열린 Google Play 참여 페이지에서 테스터 되기(화면 언어에 따라 이름이 다를 수 있음)를 눌러 참여를 완료합니다. 이 버튼은 Google 그룹 페이지에 있지 않습니다.
  3. 참여 완료 후 안내 페이지의 Play 스토어에서 설치로 설치합니다. 그룹 가입·Google Play 참여·Play 스토어 설치 모두 같은 계정을 사용하세요. 이메일로 직접 초대받아 등록된 테스터는 그룹 가입을 생략할 수 있습니다.
  4. 앱을 열면 접속 목록이 보입니다. 첫 실행, 열린 탭이나 복원할 작업이 있는 경우, 연결 알림으로 터미널에 복귀할 때는 시작 광고를 생략합니다. 그 외 일반 실행에서만 시작 화면과 광고가 표시될 수 있으며, 실제 광고 노출 간격은 최소 30분입니다.
  5. 오른쪽 위 + New 를 눌러 서버 주소(Host)와 사용자 이름(Username)을 넣고 Save.
  6. 목록에서 그 연결을 누르면 접속합니다. 처음 접속하는 서버는 호스트 키 지문을 보여 주니 맞으면 수락합니다 (다음부터는 묻지 않음).
  7. 비밀번호를 저장하지 않았다면 접속할 때 묻습니다.

테스트 참여 링크와 설치 오류는 Play 설치 문제를 확인하세요. 소개 페이지에서 APK(직접 설치용)와 AAB(Google Play 업로드용)를 다운로드할 수 있습니다.

시작 광고

첫 실행과 열린 탭·복원할 작업이 있는 경우에는 시작 화면과 광고를 생략합니다. 연결 유지 알림은 터미널로 바로 열리므로 광고가 없습니다. 그 외 일반 실행에서만 프로세스당 한 번 표시될 수 있으며, 실제 광고 노출 사이에는 최소 30분을 둡니다. 광고를 기다리는 사이 다른 화면이나 작업으로 이동하면 뒤늦게 광고를 띄우지 않습니다. 앱 제목 또는 About에서 마지막 광고 표시·생략 결과를 확인할 수 있습니다.

한글을 쓰려면 서버 로케일이 UTF-8 이어야 합니다. HanTerm 은 기본으로 LANG=en_US.UTF-8 을 보내며, 서버 sshd 설정에 AcceptEnv LANG LC_* 가 있어야 적용됩니다. 자세한 내용은 문제 해결.

연결이 하나라도 열려 있으면 알림 표시줄에 HanTerm 알림이 떠 있습니다. 앱이 백그라운드에 있어도 연결이 끊기지 않게 하는 알림이므로 끄지 마세요 (Android 13 이상은 처음에 알림 권한을 묻습니다).

2접속 목록 화면

위치동작
HanTerm v1.x.x (제목)누르면 버전·빌드, 배포판(Google Play / d32.org), 마지막 시작 광고 결과, 오류 기록이 나옵니다.
+ New둥근 사각형 입력창에서 새 연결 추가. 기존 연결 편집과 메뉴에서 여는 앱 대화상자도 같은 모양을 사용합니다. 탭은 위쪽 모서리만 둥글며 메뉴·글자 크기 팝업은 네 모서리가 둥글게 표시됩니다.
⚙설정 메뉴 (17장).
연결 누르기그 서버에 새 탭으로 접속합니다. 기존 탭으로 돌아가려면 Resume terminal을 누릅니다.
연결 길게 누르기Connect · Edit · Duplicate(복사본 만들기) · Delete.
위쪽 띠 N open tab(s) · Resume terminal열린 탭 또는 복원된 탭이 있을 때 보입니다. 누르면 터미널 화면으로 돌아가며, 프로세스 종료 전 연결 중이던 탭은 다시 접속합니다. 작업 화면 복원 참고.

3연결 정보 입력

항목설명
Name목록·탭에 보일 이름 (비우면 user@host).
Host / Port / Username서버 주소, 포트(기본 22), 사용자 이름. 이름 칸을 뺀 입력칸은 영문 자판으로 열립니다.
Password비워 두면 접속할 때마다 묻습니다. 저장한 비밀번호는 기기의 Android Keystore 키로 암호화됩니다.
Saved key앱에 저장한 SSH 키 중 하나를 고릅니다. Manage keys… 로 키를 만들거나 가져올 수 있습니다.
Private key이 연결에만 쓸 개인 키를 붙여넣거나 Load from file. OpenSSH·PEM 형식, RSA·ECDSA·Ed25519, 암호화된 키 지원 (Key passphrase).
Jump host다른 저장 연결을 거쳐 접속합니다 (ssh -J 와 같음).
Remote LANG서버에 보낼 로케일 (기본 en_US.UTF-8, 예: ko_KR.UTF-8).
Startup command접속하자마자 실행할 명령. 예: tmux attach || tmux new. 자동 재연결 때도 실행됩니다.
Keep session on server (tmux)켜면 접속할 때마다 서버의 tmux 세션에 붙습니다(없으면 만듦). 연결이 끊기거나 앱이 닫혀도 서버에서 작업이 계속되고, 다시 접속하면 그대로 이어집니다 (15장).
Port forwards로컬 포트 포워딩, 한 줄에 하나: 8080:localhost:80 (휴대폰의 localhost:8080 → 서버 쪽 localhost:80).

4터미널 화면 구성

┌ 탭 줄 ──────────────────────────────┬───┬───┐
│ ● web1 ✕ │ ● db ✕ │                   │ + │ ☰ │
├─────────────────────────────────────┴───┴───┤
│ $ echo 안녕하세요                              │  ← 터미널
│                                              │
├──────────────────────────────────────────────┤
│ ESC CTRL ALT TAB ↑ ↓ ← → HOME END … 한/A ⌨ ⚡ │  ← 추가 키 줄 (옆으로 밀기)
└──────────────────────────────────────────────┘

5한글 입력

화면 키보드 (삼성 키보드, Gboard 등)

하드웨어 키보드 (블루투스·폴드 키보드)

영문 전용 키보드

일부 영문 키보드에서 글자가 이상하게 들어가면 칸 메뉴 Key event input mode 를 켭니다 (키보드가 글자 대신 키 이벤트를 보내게 함, 화면 키보드 한글 조합은 꺼짐).

6터치 조작·텍스트 선택

동작결과
탭키보드 표시. 스크롤백을 보던 중이면 맨 아래로. tmux·vim 등이 마우스를 켰으면 그 자리 클릭도 전달.
위아래로 끌기스크롤백(기본 최근 3000줄, 설정에서 최대 99999줄) 보기, 튕기면 관성 스크롤. 오른쪽에 위치 막대와 ↑ 줄 수 표시. vim·less 같은 전체 화면 프로그램에서는 마우스 휠(마우스를 켠 경우) 또는 ↑↓ 키.
두 손가락 벌리기/모으기글자 크기 (이 칸에만 적용).
길게 누르기단어 선택 → 그대로 끌어 범위 늘리기. 양 끝 물방울 손잡이로 조절. 누르는 동안 손가락 위(위쪽 공간이 없으면 아래)에 2배 돋보기가 표시되어 선택할 글자 칸을 확인할 수 있습니다. 손가락을 놓으면 사라집니다.
링크 길게 누르기화면 끝에서 줄바뀜된 긴 주소도 빈칸 없이 통째로 선택.

선택하면 떠 있는 팝업이 나옵니다: Copy(링크면 Copy link) · Open link(링크일 때) · Copy as link · Paste · Select all · Menu(칸 메뉴 열기). 줄 끝 공백은 빼고, 자동 줄바꿈된 줄은 이어서 복사합니다.

출력 프로그램이 긴 로그인 주소 등에 직접 줄바꿈이나 들여쓰기를 넣었다면, 주소를 길게 누른 뒤 선택 손잡이를 조절해 주소 처음부터 마지막까지 선택하고 Copy as link를 누르세요. 선택한 글자의 줄바꿈·공백·탭을 모두 제거해서 복사합니다. +와 %20 등 주소 안의 인코딩은 유지합니다. 주변 설명이나 다른 주소가 포함되지 않도록 주소 하나만 선택하세요. 메뉴가 보이지 않으면 팝업의 더보기 메뉴를 확인하세요.

7탭 (여러 연결)

탭을 짧게 누르면 해당 탭을 바로 선택합니다. 두 번 누르면 두 번째 클릭에서 메뉴만 열리고, 1초 이상 누르면 타이머에서 앱 내부 탭 끌기로 전환됩니다. 손가락 위의 탭 이름과 놓을 위치가 표시되며 연결은 유지됩니다. 손가락을 움직여 다른 칸으로 옮길 수 있습니다. 누르는 동안 탭 줄을 다시 만들지 않으며 가로 스크롤은 탭 선택이나 메뉴 열기로 처리하지 않습니다.

탭 메뉴 — 이 연결에 관한 모든 일

탭을 두 번 누르거나, 칸 메뉴 맨 위 Tab actions… 를 누르면 해당 탭 아래에 열립니다. 남은 칸 높이에 맞춰 메뉴 안에서 스크롤됩니다.

묶음항목
Open againDuplicate here: 같은 서버에 한 번 더 접속해 같은 칸 새 탭으로 · Duplicate to the right / below: 칸을 나눠 새 칸에 중복 접속
This connectionFiles (SFTP): 파일 브라우저 (12장) · Install public key: 저장한 키의 공개 키를 이 서버에 등록 (13장) · Rename tab: 탭 이름 바꾸기 (Reset 으로 원래 이름) · Copy address: user@host[:port] 복사
Keep running on serverKeep session on server (tmux): 이 서버를 tmux 세션 안에서 쓰기 (켜면 바로 붙음, 연결 설정에 저장) · Server sessions (tmux)…: 서버의 세션 목록 — 새 탭에서 열기·이 탭에서 붙기·끝내기, 새 세션 만들기 (15장)
—Reconnect/Connect · Disconnect (keep tab): 연결만 끊고 탭과 화면은 남김 · Close tab · Close other tabs in this pane
탭을 1초 이상 손가락을 떼지 않고 누르면 탭이 떠올라 끌 수 있습니다. 탭 가운데를 누른 채 기다린 뒤 가장자리로 옮기세요. 자기 칸을 나누려면 그 칸에 탭이 두 개 이상 있어야 합니다 → 칸 나누기.

8칸 나누기

화면을 최대 4칸으로 나눠 여러 연결을 동시에 봅니다 (폴드·태블릿에 특히 유용).

각 칸 오른쪽 위 ☰. 그 칸의 화면·배치·입력, 그리고 앱 설정을 다룹니다 (연결에 관한 일은 탭 메뉴). 메뉴는 Pane / Appearance / Input / App을 나타내는 선택 시 테두리 없이 아이콘에 맞춘 작은 밝은 둥근 배경·파란색으로 표시하는 18dp 아이콘 탭(분할·팔레트·키보드·컴퓨터)으로 나뉘며 선택한 탭의 항목만 표시합니다. 아이콘을 길게 누르면 이름을 확인할 수 있습니다. 메뉴는 단색 배경과 얇은 강조 테두리, 그림자로 표시합니다. 아이콘 크기는 절반으로 줄이고 누르는 영역은 유지합니다. 그 칸 안에 맞춰 펼쳐지고, 길면 항목 영역 안에서 스크롤됩니다. 창 높이는 선택한 메뉴 내용에 맞춰 빈 공간 없이 바뀌며, 좁은 칸에서는 탭 줄도 옆으로 이동할 수 있습니다. 오른쪽 흐린 글자는 지금 값, 스위치는 켜고 끄는 항목입니다.

묶음항목
PaneTab actions…: 지금 탭의 탭 메뉴 · Find in scrollback (11장)
PaneSplit right / Split down: 지금 탭을 오른쪽·아래 새 칸으로 (칸에 탭이 둘 이상일 때) · Merge all panes(칸이 나뉘어 있을 때)
AppearanceColor theme · Font · Text size(슬라이더) · Cursor · Blinking cursor — 14장
InputDirectory suggestions(cd 폴더 후보) · Edit key row · Korean on hardware keyboard · Key event input mode · Touch mouse reporting
AppDisconnect all connections(모든 칸의 연결 일괄 중단) · Scrollback lines(탭마다 남길 출력 줄 수) · Reconnect automatically · About HanTerm(버전 정보와 Check for updates)

App → Disconnect all connections를 누르고 확인하면 모든 칸의 SSH 연결, 접속 시도와 자동 재연결 대기를 중단합니다. 탭·출력·분할 배치는 유지되며 앱을 다시 열어도 자동으로 연결하지 않습니다. 다시 접속하려면 각 탭 메뉴의 Connect를 사용하세요. 진행 중인 SFTP 전송은 중단됩니다. 서버의 tmux 세션은 삭제하지 않지만, 일반 셸에서 실행 중인 작업은 종료될 수 있습니다.

정리하면: 탭 메뉴 = 개별 연결(중복 접속·파일·키·이름·다시 연결·끊기·닫기), 칸 메뉴 = 화면(찾기·칸 나누기·테마·글꼴·커서·키 줄·입력 방식)과 앱 전체 작업.

메뉴와 메뉴에서 여는 앱 대화상자는 해당 칸의 오른쪽 위에, 연결 목록에서는 화면 오른쪽 위에 내용에 맞는 크기로 표시됩니다. 글자 크기 팝업도 같은 위치를 사용합니다. Android 시스템 파일 선택창은 시스템 기본 배치를 사용합니다.

cd 폴더 추천

같은 폴더 목록은 최대 5초간 메모리에 재사용해 경로 입력에 더 빨리 반응합니다. 입력과 연결이 그대로인 화면 갱신에서는 후보를 다시 만들지 않아 가로 스크롤 위치와 터치 중인 항목을 유지합니다. 새 폴더가 바로 보이지 않으면 후보 줄의 Refresh를 누르세요. 연결·탭이 바뀌면 이전 연결의 캐시는 사용하지 않습니다.

  1. 서버의 빈 Bash 또는 Zsh 프롬프트에서 칸 메뉴 Input → Directory suggestions를 켜고 확인합니다. 입력이 비어 있는지 확인한 뒤 Enter를 두 번 보내고 긴 초기화 명령의 에코를 숨깁니다. 완료 신호가 5초 안에 오지 않거나 임시 버퍼가 64KB를 넘으면 원래 출력을 복원해 오류를 확인할 수 있습니다. 초기화가 끝나고 프롬프트가 표시된 뒤 입력하세요. 편집기·비밀번호 입력·실행 중인 프로그램 안에서는 켜지 마세요.
  2. cd 처럼 공백까지 입력하면 키보드 위의 별도 줄에 이동 가능한 폴더가 나옵니다. 경로를 입력하면 후보를 좁힙니다. 상대 경로, 절대 경로, ~/, 한글 및 공백이 포함된 폴더를 지원합니다.
  3. 후보를 누르면 현재 경로 부분만 바뀝니다. 폴더 경로는 따옴표로 보호하며 명령을 자동 실행하지 않습니다. 하위 폴더를 계속 선택하거나 Enter로 이동하세요.

폴더는 같은 SSH 연결의 SFTP로 읽기 전용 조회합니다. SFTP가 막히거나 셸·SFTP의 파일 시스템이 다르면 조회가 안 될 수 있습니다. 연동은 Bash·Zsh를 자동 구분하고 기존 프롬프트 훅을 유지하며, 서버 설정 파일은 쓰지 않습니다. 켜짐 설정은 서버별로 저장되어 앱 재실행 뒤에도 유지되며 일반 SSH 재접속에서는 자동 연동합니다. tmux 재접속에서는 실행 중인 프로그램을 보호하기 위해 훅 명령을 자동 전송하지 않습니다. tmux 또는 새 셸에서 후보가 나오지 않으면 빈 Bash·Zsh 프롬프트에서 Input → Initialize directory suggestions를 누르세요. 추천을 끄더라도 임시 프롬프트 훅은 셸이 종료될 때까지 남으며 앱에서는 무시합니다. tmux 등 중간 프로그램이 폴더 보고를 전달하지 않으면 후보가 나오지 않을 수 있습니다.

조합 중인 글자가 아닌 서버에 확정 전송된 입력을 기준으로 추천합니다. 방향키·명령 이력·Tab·복잡한 셸 표현식을 쓰면 다음 프롬프트까지 추천을 중단합니다. 기존 셸 Tab 자동완성은 그대로 사용할 수 있습니다. 숨김 폴더는 .을 입력하면 표시합니다. 목록은 조회 부하를 줄이기 위해 최대 40개 표시하며 매우 큰 폴더에서는 일부 후보가 생략될 수 있습니다.

화면 터치 후 0;119;56M 같은 좌표 문자열이 입력되면 원격 프로그램이 마우스 보고를 해제하지 않았을 수 있습니다. Input → Touch mouse reporting을 끄면 터치 클릭과 전체 화면 프로그램의 휠 전송을 중단합니다. 설정은 앱 재실행 뒤에도 유지되며, 일반 스크롤백 이동과 키보드 표시는 사용할 수 있습니다. 다시 켜면 tmux·vim·htop의 마우스 조작을 사용할 수 있습니다. 재접속 시 이전 마우스 모드는 해제되며 글자 조합 중이나 포커스를 옮기는 터치에서는 클릭을 보내지 않습니다.

10추가 키 줄·스니펫

키보드 위의 키 줄은 옆으로 밀어 더 볼 수 있습니다. 방향키·⌫·DEL 은 누르고 있으면 반복됩니다.

키동작
ESC · TAB · ↑↓←→ · HOME END PGUP PGDN해당 키
CTRL · ALT다음 글자 하나에 적용 (한글 자모도 영문 키로 바꿔 보냄)
- / | ~ _ :자주 쓰는 기호
한/A하드웨어 키보드 한글 조합 켜고 끄기
⌨화면 키보드 보이기/숨기기
⚡스니펫 목록

키 줄 편집

칸 메뉴 Edit key row: 체크한 키만 보이고 ▲▼ 로 순서를 바꿉니다. F1~F12, INS, DEL, ⌫(Backspace), ↵(Enter), 여러 기호(\ * & $ < > ' " ` { } [ ] = ; ! # % ^ ( ) ? . , @ +)를 더할 수 있습니다. Reset 은 기본 키 줄로.

스니펫 (자주 쓰는 명령)

11스크롤백 찾기

12파일 (SFTP)

탭 두 번 누르기 → Files (SFTP). 이미 열린 SSH 연결 위에서 파일 칸이 열립니다 — 지금 칸 옆(넓으면 오른쪽, 아니면 아래)에 약 1/4 크기로, 자리가 없으면 전체 화면으로.

같은 세션에서는 파일 화면을 하나만 엽니다. Files (SFTP)를 다시 누르면 기존 파일 칸을 사용하며, 좁은 화면에서 숨겨진 파일 칸은 확대해서 보여 줍니다. 전체 화면 파일 브라우저가 이미 열려 있으면 중복 실행하지 않고 안내합니다. 같은 서버라도 별도의 SSH 세션에서는 각각 파일 화면을 열 수 있습니다.

13SSH 키·점프 호스트·포트 포워딩

SSH 키 관리

점프 호스트

연결 정보 Jump host 에서 다른 저장 연결을 고르면 그 서버를 거쳐 접속합니다. known_hosts 에는 원래 서버 이름으로 기록됩니다.

포트 포워딩

Port forwards 에 로컬포트:대상호스트:대상포트 를 한 줄에 하나씩. 접속하는 동안 휴대폰 브라우저에서 http://localhost:로컬포트 로 서버 쪽 서비스에 닿습니다.

자동 재연결

네트워크가 끊기면(와이파이↔LTE 전환 등) 2초 → 4초 → … → 30초 간격으로 8번 다시 시도하고, 그 뒤에는 네트워크가 돌아오는 즉시 연결합니다. exit 로 끝내거나 인증에 실패한 경우는 재연결하지 않습니다. 끄려면 칸 메뉴 App 묶음 또는 ⚙ 의 Reconnect automatically.

앱 종료 후 작업 화면 복원

  1. 열린 탭에서 이름·순서·분할 비율과 칸별 설정을 정합니다. 변경한 배치는 자동으로 저장됩니다.
  2. 앱을 다시 열고 접속 목록 위 Resume terminal을 누릅니다. 기존 탭을 이어 쓰려면 서버 목록을 다시 눌러 새 탭을 만들 필요가 없습니다.
  3. 앱 잠금이 켜져 있으면 먼저 잠금을 해제합니다. 연결 중이던 탭은 재접속하고, 서버에 설정한 인증 방식에 따라 비밀번호 등을 다시 물을 수 있습니다.

시스템이 앱을 종료하거나 앱을 다시 시작해도 탭 순서·이름·선택한 탭·입력 칸·분할 비율·칸별 테마·글꼴·입력 설정·SFTP 칸을 복원합니다. 접속 목록 위의 Resume terminal 을 누르면 연결 중이던 탭에 다시 접속합니다. 앱 잠금이 켜져 있으면 잠금 해제 후 접속하며, 직접 끊어 둔 탭은 끊긴 상태로 남습니다. 저장한 서버를 삭제하면 그 서버의 탭은 복원하지 않습니다.

복원 기록은 기기 안에 암호화해 보관하며 서버 ID와 화면 배치만 담습니다. 인증 정보는 기존 저장 연결에서 읽습니다. 터미널 출력과 스크롤백은 저장하지 않습니다. 실행 중인 작업과 서버 화면을 이어 가려면 Keep session on server (tmux) 를 켜 두세요. 재접속 시 Startup command도 다시 실행됩니다. SFTP 칸은 서버의 기본 폴더에서 다시 열리며 진행 중이던 파일 전송은 재개하지 않습니다. 탭을 닫으면 복원 기록에서도 제거됩니다.

14테마·글꼴·커서

상태바·내비게이션 바·카메라 노치와 화면 키보드 영역에 내용이 가려지지 않도록 화면 여백을 조절합니다.

테마·글꼴·글자 크기는 칸마다, 커서 모양·깜빡임은 모든 칸 공통입니다.

15tmux·vim 과 함께 쓰기 · 끊겨도 작업 이어 가기

연결이 끊겨도 작업(AI 등) 이어 가기

SSH 연결이 끊기면 서버는 그 연결에서 돌던 프로그램(Claude Code·Codex 같은 AI CLI, 빌드, 로그 보기 등)을 함께 끝냅니다. 프로그램을 서버의 tmux 세션 안에서 돌리면 연결과 상관없이 계속 실행되고, 다시 접속해서 붙기만 하면 됩니다. HanTerm 이 이것을 자동으로 해 줍니다.

  1. 서버에 tmux 설치 (한 번): sudo apt install tmux (Fedora: sudo dnf install tmux, macOS: brew install tmux). tmux 가 없고 screen 이 있으면 screen 을 씁니다.
  2. 탭 메뉴 Keep session on server (tmux) 를 켭니다 (또는 연결 정보에서 체크). 지금 연결이 바로 hanterm 세션으로 들어갑니다.
  3. 그 안에서 AI CLI 등을 실행합니다. 이제 네트워크가 끊기거나, 앱을 닫거나, 탭을 닫아도 서버에서 계속 돕니다.
  4. 다시 접속하면(자동 재연결 포함) 같은 세션에 붙어 하던 화면 그대로 이어집니다.

tmux·vim 설정

16하드웨어 키보드 단축키

단축키동작
Ctrl+Shift+T새 탭 (서버 목록)
Ctrl+Shift+W탭 닫기
Ctrl+Tab / Ctrl+Shift+Tab칸 안에서 다음/이전 탭
Ctrl+Shift+C / V선택한 글자 복사 / 붙여넣기
Ctrl+Shift+F스크롤백 찾기
Ctrl+Shift+= / -글자 크게 / 작게
Ctrl+Alt+←↑↓→그쪽 칸으로 입력 옮기기
한/영 또는 Shift+Space앱 한글 조합 켜고 끄기

그 밖의 Ctrl/Alt 조합, F1~F12, 방향키 등은 그대로 서버로 갑니다.

17설정·백업·앱 잠금·업데이트

목록 화면 오른쪽 위 ⚙.

묶음항목
SecurityApp lock: 지문·얼굴·화면 잠금 (Android 9+; Android 9에서는 시스템 화면 잠금 확인 사용). 앱을 새로 열 때와 백그라운드에서 1분 넘게 있다 돌아올 때 확인 · Manage SSH keys
ConnectionsReconnect automatically · Scrollback lines: 탭마다 남길 출력 줄 수 (100~99999, 기본 3000). 탭 하나에 1,000줄당 약 0.5 MB 메모리를 쓰고(긴 줄은 더), 줄이면 오래된 줄부터 바로 지워집니다. 열린 탭에도 바로 적용
BackupExport backup (encrypted): 연결·키·스니펫을 직접 정한 암호로 암호화한 .htb 파일 하나로 저장 (PBKDF2 20만 회 + AES-256-GCM) · Import backup: 다른 기기에서 불러오기
DiagnosticsSend crash reports: Firebase 오류 수집이 포함된 빌드에서, 켜져 있으면 비정상 종료 보고서(오류 위치·앱 버전·기기 모델·Android 버전)를 보냅니다. 접속 정보·터미널 내용은 보내지 않습니다. Firebase 설정이 없는 빌드는 자동 전송하지 않습니다
UpdatesCheck for updates now · Check automatically(켜면 앱을 열 때 12시간마다 확인)
—About: 버전, 마지막 시작 광고 결과, 오류 기록(Copy crash log 로 복사해 보내 주세요)

업데이트

백업 암호를 잊으면 복원할 수 없습니다. 앱을 지우면 저장한 연결·키도 지워지므로 기기를 바꾸기 전에 백업하세요.

백업 저장·가져오기와 키 파일 읽기는 화면을 막지 않도록 백그라운드에서 처리합니다. 백업 파일은 최대 16MB, 연결 입력창에서 직접 가져오는 SSH 키 파일은 최대 64KB입니다. 파일 내용 전체를 읽기 전에 크기 제한을 적용하며, 실패하면 안내 메시지를 표시합니다.

18문제 해결

그룹에 가입했는데 Play에서 설치할 수 없거나 초기 버전이 보인다

Google Play 테스트 안내 · Play 앱 서명 안내

앱을 다시 열었는데 출력이 비어 있거나 서버 작업이 사라졌다

화면 복원은 탭과 칸의 배치를 되살리고 SSH에 재접속하는 기능입니다. 이전 출력·스크롤백을 저장하거나 일반 SSH 셸의 프로세스를 되살리지는 않습니다. 중요한 작업은 시작 전에 Keep session on server (tmux)를 켜고 서버의 tmux 안에서 실행하세요. 직접 닫은 탭은 복원하지 않으며, 직접 끊은 탭은 탭 메뉴 Connect로 연결합니다.

한글이 ? 나 깨진 글자로 보이거나, 지울 때 반 글자만 지워진다

서버 로케일이 UTF-8 이 아닙니다. 서버에서 locale 을 실행해 LANG 이 …UTF-8 인지 확인하세요. HanTerm 이 보내는 LANG 이 적용되려면 서버 /etc/ssh/sshd_config 에 다음이 필요합니다 (수정 후 sshd 재시작):

AcceptEnv LANG LC_*

또는 서버의 ~/.bashrc 에 export LANG=en_US.UTF-8. 로케일이 없다면 sudo locale-gen en_US.UTF-8 (Debian/Ubuntu).

화면을 끄고 오래 두면 연결이 끊긴다

기기 절전(Doze) 때문일 수 있습니다. 설정 → 앱 → HanTerm → 배터리 → 제한 없음 으로 바꾸고, 서버 sshd 에 ClientAliveInterval 60 을 두면 도움이 됩니다. 끊겨도 자동 재연결과 tmux 로 이어서 작업할 수 있습니다.

입력한 글자가 중복되거나 빠진다

최신 버전으로 업데이트하세요 (1.0.8·1.2.1 에서 수정). 계속되면 쓰는 키보드 앱 이름과 함께 알려 주세요. 영문 전용 키보드라면 칸 메뉴 Key event input mode 를 켜 보세요.

Host key 가 바뀌었다는 경고가 나온다

서버를 다시 설치했거나 주소가 다른 서버로 바뀐 경우입니다. 확실하지 않으면 연결하지 마세요. 서버 관리자에게 새 지문을 확인한 뒤 수락하세요.

업데이트 설치가 안 된다 (사이트 APK)

안내 창의 Open settings에서 “이 출처 허용”을 켜고 다시 Update를 누릅니다. Play 앱은 Google의 앱 서명 키로 서명될 수 있어 사이트 APK와 항상 서로 덮어 설치할 수 있는 것은 아닙니다. 서명이 다르거나 설치할 버전 코드가 더 낮으면 설치가 실패할 수 있습니다. 배포 경로를 바꾸려면 먼저 암호화 백업을 만들고 Play 설치 문제를 확인하세요.

앱이 멈췄다

Firebase 오류 수집이 포함된 빌드에서 Send crash reports가 켜져 있으면 오류 보고서가 자동으로 전송됩니다. 자동 수집이 없는 빌드에서도 목록 화면 제목(HanTerm) 또는 ⚙ → About → Copy crash log로 오류 기록을 복사해 contact@d32.org로 보낼 수 있습니다. 사용한 기능·기기·키보드 앱과 재현 순서를 함께 알려 주세요.