# 030 — Termius + Windows SSH 환경 셋업 개발일지
**2026-06-21 KST**  
**작성: Claude Code**

---

## 세션 요약

Termius(폰) → Windows SSH 접속 환경에서 WiFi↔LTE 전환 시 세션 유지 + 
ds/claude 명령어 실행을 목표로 6시간 작업.
최종적으로 PowerShell 기본 쉘 원복 + sshd keepalive(15초)만 유지.

---

## 1. 작업 이력

### 1차: sshd keepalive 설정 ✅
- Windows `sshd_config` 수정: `ClientAliveInterval 15`, `TCPKeepAlive yes`
- sshd 재시작 완료
- 목적: WiFi↔LTE 전환 시 서버 레벨 세션 유지

### 2차: Termius MOSH→SSH 변경 🔴
- ADB(uiautomator)로 Termius Edit Host 조작 시도
- 문제: Termius UI가 Jetpack Compose → uiautomator가 요소 인식 불가
- 20회 이상 좌표 찍기 시도, 2회 성공
- 결과: Protocol SSH 변경 성공했으나 Hostname이 "local"로 꼬임
- 실패 원인: Compose UI 특성상 정확한 좌표 예측 불가

### 3차: MSYS2 bash + tmux + alias 설정 ❌
- DefaultShell을 MSYS2 bash로 변경, tmux 자동시작
- ds/claude alias 추가
- 문제 1: MSYS2 PATH가 Windows PATH로 덮어씌워짐
- 문제 2: `ds`가 `aider`(MSYS2 Python) vs `ds.cmd`(Claude Code) 충돌
- 문제 3: DeepSeek API 모델명 변경 (v3→v4-pro)
- 최종: PowerShell로 원복

### 4차: PowerShell 원복 ✅
- DefaultShell 레지스트리 삭제
- .bashrc / .bash_profile 초기화
- sshd keepalive만 유지

---

## 2. 발견된 시스템 구조

### 듀얼 레이어 아키텍처

```
Layer 1: WSL (Widget 1,2)
  phone_claude / phone_aider / tab_claude / tab_aider
  autossh 리버스터널(2222) → WSL sshd → tmux
  WSL 재시작 시 전부 사망

Layer 2: Windows/MSYS2 (Widget 3,4)
  win_claude / win_aider
  SSH 직접(22) → MSYS2 bash → tmux
  WSL 재시작에도 생존 (Windows 독립)
```

### 위젯 3,4의 특징
- ssh 명령어에서 `C:\msys64\usr\bin\bash.exe`를 직접 경로 지정
- DefaultShell 변경의 영향을 전혀 받지 않음
- 원래 설계대로 정상 작동 확인

### `ds` 명령어 2개 존재
| 파일 | 내용 | 사용처 |
|------|------|--------|
| `~/bin/ds` | aider (bash 스크립트) | Widget 4 (win_aider) |
| `ds.cmd` | Claude Code + DeepSeek | PowerShell, CMD |

---

## 3. 실패 원인 분석

1. **Termius ADB 조작 한계**
   - Jetpack Compose UI → uiautomator 무력화
   - 좌표 기반 tap은 정확도 불량

2. **Windows SSH + MSYS2 궁합 문제**
   - OpenSSH가 MSYS2 실행 시 환경변수 미설정
   - PATH, MSYSTEM 등 누락

3. **ds 명령어 이중성**
   - bash용(aider)과 cmd용(Claude Code)이 다름
   - 환경에 따라 실행 결과 상이

---

## 4. 최종 상태 (2026-06-21 18:00)

| 항목 | 상태 | 비고 |
|------|------|------|
| Windows SSH 접속 | ✅ | Port 22, PowerShell 기본 |
| sshd keepalive | ✅ | 15초 간격 |
| ds/claude (PowerShell) | ✅ | .cmd 파일 실행 |
| Widget 1,2 (WSL) | ✅ | 전부 정상 |
| Widget 3,4 (Windows) | ❌ | 미실행 |
| Termius tmux | ❌ | DefaultShell 제거로 불가 |
| MOSH | ❌ | Windows 미설치 |

---

## 5. 남은 과제

1. **Termius를 Widget 3처럼 동작하게 하려면:**
   - DefaultShell = MSYS2 bash
   - .bashrc: `alias ds='cmd /c ds'` + `tmux new -A -s win_cc`
   - 또는 MSYS2에 mosh 설치: `pacman -S mosh`

2. **WiFi/LTE 전환 근본 해법:**
   - tmux 유지 (연결 끊겨도 세션 지속)
   - MSYS2 mosh-server 설치 (UDP 기반 로밍)
   - Widget 3,4 활용 (이미 설계됨)

3. **DAW 작업 연동:**
   - Widget 3(win_claude)로 Windows 전용 DAW 환경 접속
   - REAPER + BBC SO 상태 확인 및 코드 작업
