🔄

Module 10: Termius CPR

Termux 비상용 Windows PowerShell 원격 제어 시스템 — 폰 Termux가 고장났을 때 PC로 직접 제어

⏱️ 10분 🖥️ Windows PowerShell 🔗 SSH 리버스터널

1 Termius CPR이란?

Termux가 고장나서 폰 SSH 접속이 안 될 때, Windows PC를 SSH로 직접 제어하는 백업 시스템입니다.

동작 흐름

Termius (폰/탭) → SSH :22 → Windows OpenSSH → PowerShell (. profile.ps1) → 6개 함수

Termius vs Termux

Termius는 SSH 클라이언트입니다. Termux처럼 리눅스 환경이 아니라, SSH로 PC에 접속하기 위한 도구입니다. PowerShell PC Controller가 실제 실행 환경입니다.

Raw 소스 (git 캐논)

이 페이지의 실제 실행 파일(profile.ps1, 위젯 0~8번)은 C:\termius\에 라이브로 존재하며, git 백업본은 termius/ 폴더에 있습니다. C드라이브 소실 시 복원 절차는 termius/RESTORE.md 참조.

2 연결 아키텍처

Termius → Windows → PowerShell → WSL/Claude 전 구간 연결 구조

연결 맵
┌─────────────────────────────────────┐ │ Termius (폰/탭/어디서나) │ │ SSH 클라이언트 (Free 플랜) │ └──────────┬──────────────────────────┘ │ SSH :22 ▼ ┌─────────────────────────────────────┐ │ Windows OpenSSH (100.81.24.124) │ │ DefaultShell = PowerShell │ └──────────┬──────────────────────────┘ │ profile.ps1 자동 로드 ▼ ┌─────────────────────────────────────┐ │ PowerShell 콘트롤센터 │ │ │ │ claude → claude.exe (sonnet) │ │ ds → claude.exe (deepseek) │ │ wsl → WSL bash │ │ wslc → WSL Claude tmux │ │ wsld → WSL Aider tmux │ │ revive → PC CPR (전체 복구) │ └─────────────────────────────────────┘

핵심 포인트:

3 PowerShell 명령어

Termius로 PC 접속 후 사용하는 6개 함수

명령어설명실행 환경
claudeWindows Claude Code (Sonnet) 실행Windows 직접
dsDeepSeek Claude 실행 (102K 문맥)Windows 직접
wslWSL Ubuntu bash 진입WSL (wsl.exe 직접 호출)
wslcWSL tmux → phone_claude 세션 접속WSL tmux
wsldWSL tmux → phone_aider 세션 접속WSL tmux
revivePC CPR 5단계 전면 복구Windows + WSL
$ Windows Sonnet 실행
# Windows Claude Code (Sonnet) 실행
claude
$ DeepSeek Claude 실행
# Windows DeepSeek Claude 실행
ds
$ WSL Claude tmux 접속
# WSL tmux phone_claude 세션으로 바로 접속
wslc
$ WSL Aider tmux 접속
# WSL tmux phone_aider 세션으로 바로 접속
wsld
profile.ps1 설치 위치

PowerShell 프로필에 dot-source 추가: echo ". C:\termius\profile.ps1" >> $PROFILE

4 CPR — 5단계 전면 복구

revive 한 방이면 죽은 PC/WSL 서비스가 전부 살아납니다.

$ PC CPR 실행
# PC 전면 복구 — WSL + sshd + 터널 + tmux
revive

revive() 5단계:

  1. WSL 상태 확인 — 응답 없으면 wsl.exe --shutdown 후 재시작
  2. WSL sshd 기동service ssh start
  3. Windows sshd 확인 — 중단 시 Start-Service sshd
  4. autossh 리버스터널 복구 — 중복 프로세스 제거 후 1개만 실행
  5. WSL tmux 세션 복구 — 8개 세션(phone_claude, phone_aider 등) 자동 생성

3가지 복구 시나리오:

시나리오 1: WSL만 죽은 경우
> revive → [1] WSL 재시작 (wsl --shutdown + wsl) → [2] sshd 기동 → [3] autossh 리버스터널 복구 → [4] tmux 세션 복구
시나리오 2: PC 완전 먹통 (전원 문제)
1. Dell BIOS → AC Recovery On (자동 전원) 2. Sysinternals Autologon → Windows 자동 로그인 3. WSL 자동 기동 → SSH + Tailscale + autossh 4. Termius → SSH Windows:22 5. > revive → 전 서비스 복구 확인
시나리오 3: Termius 접속 → 바로 작업
Termius → SSH dtsli@100.81.24.124:22 > claude ← 5초면 sonnet > ds ← 5초면 DeepSeek > wslc ← WSL Claude tmux

5 폰 위젯 구조

폰 홈화면에서 Termius 경유 PC 제어를 위한 위젯 0-4번

#파일연결실행
00.revive.shWindows:22 → PowerShellPC CPR — revive
11.claude.shWindows:22 → PowerShellWindows Sonnet — claude
22.ds.shWindows:22 → PowerShellWindows DeepSeek — ds
33.wsl-claude.shWSL:2222 → tmuxphone_claude attach
44.wsl-aider.shWSL:2222 → tmuxphone_aider attach
$ 0.revive.sh 예시
# 위젯 0번 — 폰에서 PC로 SSH → revive 실행#!/data/data/com.termux/files/usr/bin/bash termux-wake-lock 2>/dev/null WIN_IP="100.81.24.124" exec ssh -tt -p 22 dtsli@${WIN_IP} 'powershell -NoLogo -Command ". C:\termius\profile.ps1; revive"'

위젯 5-8번은 Termius와 무관하게 기존 Termux용으로 유지:

6 SSH Config

Termius에서 Import 가능한 5개 SSH 호스트 정의

C:\Users\dtsli\.ssh\config
Host win → dtsli@100.81.24.124:22 # Windows PC Controller Host wsl → dtsli@100.90.83.128:2222 # WSL 직접 (Tailscale) Host wsl-relay → dtsli@100.81.24.124:2222 # WSL via 리버스터널 Host phone → dtsli@100.103.250.45:8022 # S25 Ultra Termux Host tab → dtsli@100.74.21.77:8022 # Tab S9 5G Termux
SSH Config Import 방법

Termius → Hosts → New Host → Import → ~/.ssh (Windows 경로: C:\Users\dtsli\.ssh\config)

7 버그 수정 이력

2026-07-07 개발 중 발견 및 수정된 4개 버그

🔴 BUG-001: wsl alias Call depth overflow → ✅ 수정

증상: PowerShell에서 wsl 명령 호출 시 무한 재귀 → "Call depth overflow"
원인: Set-Alias -Name wsl -Value wsl-enterwsl.exe를 가림
해결: alias 제거, 모든 WSL 호출을 wsl.exe로 직접 호출

🟡 BUG-002: autossh 프로세스 3중복 → ✅ 수정

증상: 동일 리버스터널 autossh 3개 실행 중 (PID 682, 843, 3734)
원인: wsl-server-init.sh + wake_wsl() + 수동 실행이 중복
해결: revive()에서 pkill -f "autossh.*2222" 후 1개만 실행 + pgrep 가드

🟡 BUG-003: C:\termius\ 경로 의존성

증상: 위젯 스크립트가 C:\termius\profile.ps1 경로를 하드코딩
영향: 경로 없거나 다르면 전부 실패
대응: 환경변수로 분리 또는 SSH config에 통합 검토 중

🔴 BUG-004: revive() 내 wsl --shutdown 함수 충돌 → ✅ 수정

증상: revive()wsl --shutdownfunction wsl을 호출 → wsl.exe -d Ubuntu -u dtsli --shutdown 실행 (잘못된 명령)
영향: WSL 전체 셧다운 실패 (Ubuntu만 타겟, 글로벌 셧다운 안 됨)
해결: wsl --shutdownwsl.exe --shutdown

8 무료 vs Pro

Termius Free 플랜으로 충분한 이유 — Pro 불필요

Termius Free — 포함 기능

SSH / SFTP / 멀티탭 & 분할화면 / 테마 폰트 변경 / 포트 포워딩 / 광고 없음

Free vs Pro 차이:

기능무료Pro (~$8/월)
클라우드 동기화
크로스디바이스❌ (수동만)
암호화 볼트
Proxy/Jump host
FIDO2 하드웨어 키
왜 Free로 충분한가?

Termius는 SSH 파이프 역할만 — 폰/탭에서 Windows:22 1개 연결만 유지하면 됩니다.
클라우드 동기화 대신 SSH Config Import 사용 (수동 1회).
모든 제어는 PowerShell PC Controller alias로 처리 — Pro 기능 전혀 필요 없음.

Mosh 불필요 검증: SSH + Tailscale이 WiFi↔LTE 전환 시 IP를 유지하므로 Mosh가 필요 없습니다. Tailscale IP(100.x.x.x)는 고정되며, KeepAlive 15초로 연결 유지됩니다.

🔄 Termius CPR 완료!

← 이전: 헬스체크 다음: Free Runtime → 📡 강의 홈