TAILSCALE + SSH + TMUX · CLAUDE CODE & CODEX 전용

맥에서 돌아가는 세션을 폰에서 그대로, 10분 세팅 가이드

ShakeJ Terminal은 안드로이드 폰에서 Tailscale과 SSH로 맥의 tmux 안에 떠 있는 Claude Code·Codex 세션에 바로 붙는 전용 터미널입니다. 터미널을 거의 안 써 본 분도 아래 순서대로 복사·붙여넣기만 하면 끝납니다.

macOS 13+ Ventura 이상 Android 10+ 스마트폰·태블릿 Tailscale 같은 계정 로그인 약 10분 최초 1회 세팅
my-mac.tailnet.ts.net alex:22 · SSH
5h 42% 7d 68% · 세션 2개
실행 중인 TMUX 세션
c1 claude · shakej-terminal
선택 대기

> 테스트 명령을 실행할까요? (1/2)

c2 codex · api-server
작업 중

> 인증 모듈 리팩터링 진행 중...

c1 카드를 누르면 터미널 화면으로 이동
$ tmux attach -t c1
● Claude Code · ~/works/shakej-terminal
+ 파일 3개 수정 완료 · 단위 테스트 통과
? 권한 확인: ./gradlew testDebugUnitTest
빠른 선택 시트
1. 이번만 허용 2. 항상 허용
ESCTABCTRL^C↑↓↵
STEP 0 약 1분

준비물 & 왜 3가지 세팅이 필요한가요?

맥(Mac)macOS 13 (Ventura) 이상
안드로이드 폰Android 10 이상
같은 Tailscale 계정맥과 폰에 같은 계정으로 로그인
소요 시간 약 10분최초 한 번만 설정하면 끝
Q. 「테일스케일만 깔면 세션이 보이나요?」

아니요! Tailscale은 폰과 맥 사이에 안전한 전용 길(터널)만 연결해 줍니다. 실제로 세션을 보고 조작하려면 앱이 SSH(원격 로그인)로 맥에 들어가서 tmux 안에 떠 있는 세션을 읽어야 합니다. 그래서 아래 3가지(① 원격 로그인 켜기 · ② 설치 한 줄 실행 · ③ tmux 안에서 실행)가 꼭 필요합니다.

1. 안드로이드 폰
ShakeJ Terminal 앱

my-mac.tailnet.ts.net:22 (계정 alex)로 접속

2. 전용 터널
Tailscale 터널

공유기 포트포워딩 없이 밖에서도 내 맥까지 길을 연결

3. 맥의 출입문
맥 SSH (원격 로그인)

시스템 설정 > 공유 > 원격 로그인을 켜서 문을 엶

4. 살아 있는 작업방
tmux 세션들 (c1, c2)

설치 한 줄 도우미가 세션 목록·사용량·알림을 전달

✓ 이렇게 보이면 성공

맥과 안드로이드 폰이 준비되었고, 두 기기에서 공통으로 쓸 구글·애플·깃허브 계정 하나를 정했다면 다음 단계로 넘어가세요.

STEP 1 약 2분

맥에 Tailscale 설치·로그인

Tailscale을 설치하면 집 밖에서 LTE/5G를 써도 내 맥을 바로 찾아갈 수 있는 전용 주소(예: 100.84.21.9 또는 my-mac.tailnet.ts.net)가 생깁니다.

맥용 Tailscale 다운로드 (tailscale.com/download/mac) ↗

macOS 상단 메뉴 막대 · Tailscale ● Connected (연결됨)
Tailscale: Connected
alex@example.com · 내 맥 주소: 100.84.21.9 (my-mac.tailnet.ts.net)
✓ 이렇게 보이면 성공

맥 화면 오른쪽 위 메뉴 막대의 Tailscale 아이콘을 눌렀을 때 상단에 Connected가 켜져 있고, 내 맥 이름 옆에 100.x.y.z 숫자가 보이면 성공입니다.

막히면 펼치기: 「VPN 구성을 추가하려고 합니다」 창이 떠요
Tailscale을 처음 켤 때 맥이 가상 네트워크 터널 권한을 묻는 정상 창입니다. 허용(Allow)을 누르고 맥 암호(또는 Touch ID)를 입력해 주세요.
STEP 2 약 1분

맥 원격 로그인 켜기 (SSH)

맥에서 시스템 설정 > 일반 > 공유로 들어간 뒤, 원격 로그인(Remote Login) 스위치를 켬으로 바꿉니다. 오른쪽 ⓘ 버튼을 눌러 다음 사용자에게 접근 허용이 「모든 사용자」 또는 내 계정(예: alex)으로 되어 있는지 확인하세요.

시스템 설정 > 일반 > 공유 macOS
원격 로그인 (SSH · 포트 22)
다음 사용자에게 접근 허용: 모든 사용자 (또는 내 계정 alex)
켬
✓ 이렇게 보이면 성공

원격 로그인 토글이 켜져 있고, ⓘ 상세 화면에서 모든 사용자 또는 내 맥 계정이 목록에 들어 있으면 성공입니다.

막히면 펼치기: 시스템 설정에서 「원격 로그인」 위치를 못 찾겠어요
시스템 설정 왼쪽 위 검색창에 원격 로그인 또는 공유라고 검색하면 바로 나옵니다. 그냥 다음 3단계(설치 한 줄)를 실행해도 꺼져 있으면 공유 설정 창을 자동으로 열어 줍니다.
STEP 3 약 2분

설치 한 줄 실행하기

먼저 맥에서 터미널(Terminal) 앱을 엽니다. 키보드에서 ⌘ Command + Space를 눌러 Spotlight 검색창을 띄우고, Terminal(또는 터미널)을 입력한 뒤 Return(엔터)을 누르세요.

⌕ Terminal ⌘ + Space

아래 명령어 오른쪽의 복사 버튼을 누른 뒤, 열린 터미널 창에 붙여넣고(⌘ + V) Return을 누릅니다:

맥 터미널 — 설치 한 줄 명령
curl -fsSL https://terminal.gamely.cc/install.sh | bash

설치가 끝나면 터미널 맨 아래에 폰 앱에 그대로 적어 넣을 주소와 계정이 아래처럼 출력됩니다:

==> [1/6] 원격 로그인(SSH) 확인 ... 활성화됨 (포트 22)
==> [2/6] Homebrew 및 필수 도구(tmux, jq) 확인 ... 완료
==> [3/6] Python 3 확인 ... Python 3.12.4 확인됨
==> [4/6] ~/.shakej-terminal 파일 설치 ... 완료
==> [5/6] Claude Code 훅 등록 (~/.claude/settings.json) ... 완료
==> [6/6] Tailscale 주소 확인 및 상태 점검 ... OK
============================================================
ShakeJ Terminal 서버 설치 완료
============================================================
• 폰 앱에 넣을 주소 : 100.84.21.9 (또는 my-mac.tailnet.ts.net)
• 계정 (Username) : alex
• 포트 (Port) : 22
• 안내 : Claude·Codex 는 tmux 안에서 실행하세요: tmux new -s c1
✓ 이렇게 보이면 성공

터미널 마지막 줄에 「ShakeJ Terminal 서버 설치 완료」 상자와 함께 폰 앱에 넣을 주소(예: my-mac.tailnet.ts.net), 계정(예: alex), 포트 22가 보이면 성공입니다.

막히면 펼치기: Homebrew가 없어서 tmux를 건너뛰었다고 나와요

맥에 Homebrew가 아직 없다면 아래 두 줄을 순서대로 복사해 실행한 뒤, 위의 설치 한 줄을 다시 실행해 주세요:

1. Homebrew 설치
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. tmux 및 jq 설치
brew install tmux jq
STEP 4 약 1분

Claude Code · Codex를 tmux 안에서 실행하기

왜 필요한가요? 일반 터미널 창은 내 맥 모니터에만 떠 있어서 밖에서 SSH로 들어와도 화면을 볼 수 없지만, tmux 안에서 실행하면 터미널 창을 닫아도 세션이 백그라운드에 살아 있어 폰과 맥이 똑같은 화면에 언제든 붙을 수 있습니다.

1. c1 이라는 이름의 새 tmux 세션 만들기
tmux new -s c1
2. 열린 tmux 세션 안에서 Claude Code (또는 codex) 실행
claude

나갈 때는 그냥 터미널 창을 닫아도 세션은 죽지 않고 그대로 살아 있습니다. 나중에 맥에서 기존 c1 세션 화면에 다시 붙고 싶을 때는 아래 명령을 쓰면 됩니다:

맥에서 기존 c1 세션에 다시 붙기
tmux attach -t c1
alex@my-mac ~/works/project $ claude
╭──────────────────────────────────────────────────╮
│ ✻ Welcome to Claude Code │
╰──────────────────────────────────────────────────╯
[c1] 0:claude* "my-mac" 19:30
✓ 이렇게 보이면 성공

터미널 창 맨 아래에 초록색 띠([c1] 0:claude*)가 보인 상태로 Claude Code나 Codex가 떠 있으면 성공입니다.

막히면 펼치기: 「duplicate session: c1」이라고 나와요
이미 c1 세션이 만들어져 돌아가고 있다는 뜻입니다. 새로 만들지 말고 tmux attach -t c1으로 들어가거나, 두 번째 작업방은 tmux new -s c2처럼 다른 이름으로 만드세요.
STEP 5 약 3분

폰에서 연결하기 (Tailscale + ShakeJ Terminal)

1. 안드로이드 폰에 Tailscale 앱을 설치하고 맥과 같은 계정으로 로그인한 뒤 연결 스위치를 켭니다.
2. ShakeJ Terminal 앱을 열고 호스트 추가(+)를 누릅니다. 3단계 마지막에 나왔던 주소 · 계정 · 포트 22를 그대로 입력합니다.
3. 인증 방식에서 맥 로그인 비밀번호를 입력하거나, 더 편하고 안전한 「키 만들기」를 누릅니다.

A. 호스트 추가
주소(Host)my-mac.tailnet.ts.net
계정(User)alex
포트(Port)22
인증비밀번호 / 키 만들기
B. 첫 연결 지문 확인

처음 연결하는 맥의 SSH 지문:
SHA256:9xK4m...pQ2v

신뢰 (Trust)
C. 세션 목록에서 c1 선택
[c1] claude누르기 →
[c2] codex작업 중

「키 만들기」를 선택한 경우: 앱에서 공개키 복사를 누른 뒤, 카카오톡 나에게 보내기·메모 등으로 맥으로 가져와 아래 명령의 붙여넣은키 자리에 넣고 맥 터미널에서 실행하세요:

맥에 폰 공개키 등록하기 (맥 터미널에서 실행)
mkdir -p ~/.ssh && echo '붙여넣은키' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

4. 처음 연결할 때 호스트 지문 확인 창이 뜨면 「신뢰」를 누릅니다.
5. 세션 목록에서 방금 만든 c1을 누르면 바로 터미널 화면이 열립니다!

✓ 이렇게 보이면 성공

세션 목록에서 c1을 눌렀을 때 맥에서 띄워 둔 Claude Code·Codex 화면이 폰에 그대로 나타나고, 폰에서 입력한 글자가 맥에도 동시에 보이면 성공입니다.

막히면 펼치기: 공개키를 넣었는데도 계속 인증 실패가 떠요
복사한 공개키(`ssh-ed25519 AAAA...`) 앞뒤로 줄바꿈이 들어가지 않았는지 확인하고, 맥 터미널에서 chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys를 한 번 더 실행해 권한을 맞춰 주세요.
STEP 6 약 1분

알아두면 편한 이용 팁 5가지

1. 특수키 줄

키보드 바로 위의 특수키 줄에서 ESC, TAB, CTRL, 방향키(↑↓←→), 작업 중단(^C)을 한 번에 누를 수 있습니다.

2. 두 손가락 글자 크기 조절

터미널 화면 위에서 두 손가락으로 오므리거나 벌리면(핀치 줌) 내 눈에 딱 맞는 글자 크기로 즉시 조절됩니다.

3. 끊겨도 자동 재연결

지하철·엘리베이터에서 통신이 잠깐 끊기거나 앱을 다시 열어도, 홈으로 튕기지 않고 보던 세션 탭 그대로 자동 재연결됩니다.

4. 상단 사용량 띠

화면 맨 위 상태 띠에서 5시간·주간 사용량 게이지와 현재 맥 연결 상태를 한눈에 확인할 수 있습니다.

5. 권한 질문·완료 알림

Claude가 명령 실행 권한을 물어보며 멈추거나 작업을 끝내면 폰으로 바로 알림이 오고, 선택 시트에서 버튼 한 번으로 승인할 수 있습니다.

✓ 이렇게 보이면 성공

두 손가락으로 글자 크기를 조절해 보고, 하단 특수키 줄의 방향키·ESC가 잘 눌리는지 확인해 보세요.

막히면 펼치기: 알림이 오지 않아요
안드로이드 설정 > 애플리케이션 > ShakeJ Terminal > 알림 권한이 켜져 있는지 확인하고, 맥에서 3단계 설치 한 줄을 실행해 ~/.claude/settings.json에 훅이 등록되었는지 확인하세요.
STEP 7 FAQ

문제 해결 FAQ (자주 막히는 것)

1. 연결 시간 초과 (Connection timed out)가 떠요

대부분 Tailscale이 꺼져 있거나, 맥이 잠자기(슬립) 상태에 들어갔을 때 발생합니다.

  • 폰과 맥 양쪽 모두에서 Tailscale 스위치가 켜져 있는지 확인하세요.
  • 맥이 혼자 잠들지 않게 하려면: 맥의 시스템 설정 > 에너지(맥북은 배터리 > 옵션)에서 「디스플레이가 꺼져 있을 때 자동으로 잠자기 방지」를 켜 주세요.
2. 비밀번호가 맞지 않아요 (인증 실패)

Apple ID 비밀번호가 아니라 맥 화면 잠금을 풀 때 쓰는 로그인 비밀번호를 넣어야 합니다. 또한 계정(Username) 칸에 한글 이름이나 공백이 있는 표시 이름이 아니라, 맥 터미널에 whoami를 쳤을 때 나오는 영문 짧은 계정명(예: alex)을 넣었는지 꼭 확인하세요.

3. 연결은 됐는데 세션이 하나도 안 보여요

Claude Code나 Codex를 tmux 밖(일반 터미널 탭)에서 실행했기 때문입니다. 맥 터미널에서 먼저 tmux new -s c1을 입력해 tmux 세션을 만든 뒤, 그 안에서 claude를 실행하면 폰 목록에 바로 나타납니다.

4. 터미널에서 한글이 깨지거나 밀려 보여요

맥 터미널에서 3단계의 설치 스크립트(curl -fsSL https://terminal.gamely.cc/install.sh | bash)를 다시 한 번 실행한 뒤 세션을 다시 열면 한글 로케일과 글꼴 폭 정렬 설정이 깔끔하게 적용됩니다.

5. 맥미니·맥북 여러 대를 동시에 쓰고 싶어요

각 맥에서 똑같이 1~3단계 설치 스크립트를 실행한 뒤, ShakeJ Terminal 앱에서 호스트 추가(+)를 눌러 맥마다 각각의 Tailscale 주소로 등록하면 여러 대를 오가며 쓸 수 있습니다.