휴대전화에서 Claude Code 사용하는 방법
Claude Code는 모바일 앱이 아닌 VPS의 tmux 세션에서 실행됩니다. SSH와 mosh를 활용해 안정적으로 연결하고, 4GB RAM 이상의 서버 환경에서 에이전트를 끊김 없이 제어하는 실전 설정 방법을 상세히 안내합니다.
휴대폰에서 Claude Code 사용하기: 실제 작동 방식
이 가이드는 휴대폰의 터미널 앱을 사용합니다. Claude Code는 VPS (virtual private server)의 계속 유지되는 tmux 세션 안에서 실행되며, 휴대폰은 사용자가 화면을 보고 있는 동안 해당 세션에 SSH (secure shell) 연결을 엽니다. 앱을 닫아도 에이전트는 계속 작업합니다. 프로세스가 휴대폰에서 실행된 것이 아니기 때문입니다.
Claude Code는 Remote Control도 제공합니다. 세션 안에서 /remote-control을 실행하면 프로세스가 서버에서 계속 실행되는 동안 Claude 모바일 앱이나 브라우저를 통해 사용할 수 있습니다.
이 분리가 전체 설계의 핵심입니다. 휴대폰 운영 체제는 앱에서 전환한 뒤 몇 초가 지나면 해당 앱을 일시 중지하므로, 휴대폰에서 시작한 장시간 작업은 중단됩니다. 또한 wifi에서 mobile data로 이동할 때마다 새로운 네트워크 주소를 할당받습니다. 프로세스를 서버에서 실행하고 휴대폰은 화면만 표시하게 하면 두 문제가 모두 사라집니다.
서버에는 4가지가 필요합니다. 세션을 유지할 tmux, 접속에 사용할 SSH keys, 네트워크 변경을 처리할 mosh, 그리고 Claude Code 자체입니다. 휴대폰 쪽에는 손이 닿는 key row가 있는 터미널 앱 하나만 있으면 됩니다.
VPS에 필요한 항목
SSH와 tmux를 사용하는 데는 작은 Ubuntu 24.04 서버면 충분하다. Claude Code에는 더 높은 사양이 필요하다. 2026년 10월 기준 공식 요구 사항은 x64 또는 ARM64 프로세서와 4 GB 이상의 RAM이 장착된 Ubuntu 20.04 이상이다. Claude Code를 사용하려면 유료 Claude 계정(Pro, Max, Team 또는 Enterprise), API access가 있는 Console 계정, 또는 Amazon Bedrock 같은 지원되는 cloud provider를 통한 access가 필요하다. 무료 Claude.ai 플랜에는 Claude Code가 포함되지 않는다.
root가 아니라 sudo 권한이 있는 일반 사용자로 서버를 설정한다. 새 서버라면 먼저 새 VPS에서 처음 10분 동안 수행할 작업을 진행한다. 이 가이드의 뒤쪽에서 SSH 설정을 변경할 때 사용자와 방화벽이 이미 준비되어 있으면 더 쉽다.
sudo apt update && sudo apt install -y tmux mosh
curl -fsSL https://claude.ai/install.sh | bash
claude --versioninstaller는 binary를 ~/.local/bin/claude에 설치하고, claude --version는 2.1.211 (Claude Code)와 같은 줄을 출력한다. command not found이 출력되면 해당 directory가 아직 PATH에 없다. 로그아웃한 뒤 다시 로그인하고 command -v claude로 확인한다. claude doctor은 session을 시작하지 않고 installation 및 settings 진단 정보를 출력한다.
이제 laptop에서 한 번 로그인한다. phone에 의존하기 전에 수행해야 한다. project directory에서 claude를 실행하고 login prompt를 따른다. 이 과정에서는 browser에서 URL을 열고 code를 terminal에 다시 입력해야 한다. phone 화면에서 두 앱을 오가며 작업하면 느리다. 실제 keyboard로 한 번 수행하면 credentials가 server에 저장된다.
tmux 내부에서 Claude Code를 시작하여 연결 끊김 방지
tmux new -s claude
cd ~/projects/api
claudeCtrl-b를 누른 뒤 d를 눌러 세션을 분리합니다. tmux는 [detached (from session claude)]을 출력하고 셸 제어권을 반환합니다. 이제 앱을 닫거나, 신호가 끊기거나, 휴대폰을 주머니에 넣어도 됩니다. 해당 창에서 프로세스는 계속 실행됩니다.
tmux ls
tmux attach -t claudetmux ls은 claude: 1 windows (created Thu Jul 30 09:14:02 2026)와 같이 세션당 한 줄씩 정보를 출력합니다. tmux attach -t claude을 사용하면 작업 중이던 편집 내용을 포함하여 정확히 이전 상태로 돌아갈 수 있습니다.
이 방식이 가능한 이유는 tmux가 자체 서버 프로세스를 실행하며, 사용자의 셸과 Claude Code는 sshd의 자식 프로세스가 아닌 해당 서버의 자식 프로세스로 동작하기 때문입니다. SSH 연결이 종료되면 커널은 해당 연결에 연결된 프로세스에 SIGHUP(hangup) 신호를 보내지만, tmux 서버는 그 대상이 아닙니다. tmux를 사용하지 않으면 연결이 끊기는 화면 잠금 상황에서 Claude Code가 도구 호출 도중 중단될 수 있습니다. tmux 내부에서 VPS에 Claude Code 실행하기에서 세션 레이아웃에 대해 더 자세히 다룹니다.
tmux는 반드시 서버에서 실행하고 휴대폰에서는 실행하지 마십시오. 이미 연결된 세션 내부에서 tmux를 입력하면 sessions should be nested with care, unset $TMUX to force이 출력되며, 강제로 실행할 경우 두 개의 접두사 키가 충돌하게 됩니다.
모든 로그인 시 자동으로 attach
터치 키보드로 attach 명령을 입력하는 작업은 번거롭다. 서버의 ~/.profile 끝에 다음 내용을 추가한다.
if command -v tmux >/dev/null 2>&1 && [ -z "$TMUX" ] && [ -t 1 ]; then
exec tmux new-session -A -s claude
finew-session -A -s claude은 claude이라는 이름의 세션이 있으면 해당 세션에 attach하고, 없으면 세션을 생성하므로 두 경우를 하나의 명령으로 처리한다. exec은 로그인 셸을 tmux로 대체하므로 tmux를 종료하면 빈 프롬프트로 돌아가는 대신 연결이 종료된다. 일반 셸이 필요하면 파일을 건너뛴다: ssh you@server -t "bash --noprofile".
~/.profile에 추가하고 ~/.bashrc에는 추가하지 않는다. Bash는 비대화형 SSH 명령에 대해 ~/.bashrc도 읽지만, 위의 [ -t 1 ] 조건문이 파일 전송 중 tmux가 시작되지 않도록 막는다. 출력을 생성하는 보호되지 않은 시작 명령은 Received message too long와 같은 오류를 발생시켜 전송 프로토콜을 중단시킨다. ~/.profile은 로그인 셸에서만 실행되며, 대화형 SSH 세션은 로그인 셸이다.
~/.profile은 Ubuntu가 ~/.local/bin을 PATH에 추가하는 위치이기도 하다. 로그인 직후에는 claude이 정상적으로 동작하지만 tmux 안의 셸에서 command not found이라고 표시된다면 그 순서가 원인이다. 따라서 profile을 건너뛰는 스크립트에서 tmux를 시작하지 말고 위와 같이 로그인 셸에서 tmux를 시작한다.
iOS: Termius 또는 Blink Shell
두 앱 모두 SSH와 mosh를 지원하며 앱 내부에 키를 저장합니다. 차이점은 인터페이스에 있습니다.
Blink Shell은 명령 기반입니다. 프롬프트에 데스크톱 터미널과 동일한 구문인 ssh you@server 또는 mosh you@server를 입력합니다. 설정은 config을 입력하여 열며, Keys 섹션에서 키 쌍을 생성할 수 있습니다.
Termius는 폼 기반입니다. 호스트 항목을 작성한 다음, 호스트 세부 정보에서 해당 호스트의 연결 방식을 SSH에서 Mosh로 전환합니다. Termius는 자체 mosh 구현을 포함하며 mosh 1.3.0 이상을 지원하므로, 서버에는 여전히 mosh 패키지가 설치되어 있어야 합니다.
두 경우 모두 앱 내부에서 키를 생성해야 하며, 기존 개인 키를 휴대폰으로 복사하지 마십시오. 앱에 표시되는 공개 키 부분을 복사하여 서버의 ~/.ssh/authorized_keys 파일에 추가하면 됩니다. 장치별 SSH 키 및 키 취소 방법 문서에서 명명 규칙과 취소 단계를 다루고 있으며, 이는 노트북보다 휴대폰에서 훨씬 중요합니다.
터미널 앱 자체의 생체 인식 또는 암호 잠금 기능을 활성화하십시오. 이 기능을 사용하지 않으면 휴대폰 잠금이 해제된 상태에서 화면이 켜져 있는 동안 누구나 서버의 셸에 접근할 수 있습니다.
Android: Termux
pkg upgrade
pkg install openssh mosh
ssh-keygen -t ed25519 -C "pixel"
cat ~/.ssh/id_ed25519.pubTermux는 자체 저장소에서 OpenSSH와 mosh를 제공하므로 ssh, ssh-keygen, mosh은 데스크톱 환경과 동일하게 동작합니다. 출력된 공개 키 라인을 서버의 ~/.ssh/authorized_keys에 추가한 뒤 mosh you@server으로 접속하십시오.
Android의 화면 키보드에는 Esc 키와 Ctrl 키가 없지만, Claude Code를 사용하려면 두 키가 모두 필요합니다. Termux는 자체 키 행을 표시할 수 있습니다. ~/.termux/termux.properties에 다음 한 줄을 추가하십시오:
extra-keys = [['ESC','|','/','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]그 후 termux-reload-settings를 실행하면 키보드 상단에 키 행이 나타납니다. 동일한 리로드 과정을 통해 ~/.termux/font.ttf에 배치한 고정폭 TrueType 폰트도 적용할 수 있습니다.
Android는 백그라운드에서 실행 중인 Termux를 강제로 종료할 수 있으나, 이 경우 다시 연결하기만 하면 됩니다. 세션과 에이전트는 서버에서 유지되기 때문입니다.
wifi를 벗어나면 터미널이 멈추는 이유는 무엇이며, mosh는 무엇을 해결합니까?
SSH 연결은 TCP (transmission control protocol) 연결이며, TCP 연결은 양쪽 주소와 양쪽 포트로 식별된다. wifi 범위를 벗어나면 휴대전화가 모바일 네트워크에서 새 주소를 받으므로 기존 연결은 어느 쪽에서도 일치하는 대상을 찾지 못한다. 이를 알리는 신호는 없다. TCP가 포기할 때까지 터미널이 단순히 응답하지 않으며, 그 후 ssh가 client_loop: send disconnect: Broken pipe을 출력한다. 멈춘 세션을 즉시 종료하려면 Enter을 누른 다음 ~, .를 차례로 누른다.
mosh (mobile shell)는 이 장애 상황을 제거한다. mosh는 SSH를 한 번 사용해 로그인하고 mosh-server 프로세스를 시작한 다음, 서버가 선택한 UDP (user datagram protocol) 포트를 읽고 SSH 연결을 닫는다. 그 후 양쪽은 공유 세션 키로 인증한 UDP 데이터그램을 교환하므로, 세션은 주소가 아니라 해당 키로 식별된다. 주소가 바뀌어도 세션은 계속 유지된다. mosh는 입력한 내용을 로컬에서 즉시 표시하고 서버의 상태와 다를 때 화면을 다시 그린다. 따라서 느린 모바일 연결에서도 계속 사용할 수 있다.
mosh는 60000에서 61000 사이의 UDP 포트를 사용하므로 해당 범위를 열어야 한다.
sudo ufw allow 60000:61000/udp
sudo ufw statusufw로 포트 열기에서 방화벽 구성의 나머지 내용을 확인할 수 있다. 제공업체가 제어판에서 별도의 네트워크 방화벽을 제공한다면 그곳에도 같은 범위를 추가해야 한다. ufw 규칙은 시스템 앞단에 있는 필터에 영향을 줄 수 없기 때문이다.
mosh에서 흔히 발생하는 문제는 2가지다. 로그인에 성공한 뒤 멈추면서 Nothing received from server on UDP port 60001.이 표시된다면 mosh-server은 시작되었지만 클라이언트가 해당 UDP 포트로 연결하지 못한 것이다. 일반적으로 휴대전화와 서버 사이의 어딘가에 있는 방화벽이 mosh 범위의 UDP를 차단하고 있다는 뜻이다. mosh-server을 찾을 수 없다는 연결 오류가 발생한다면 서버에 패키지가 없거나 로그인 PATH에 해당 항목이 없는 것이다. 패키지를 설치하거나 mosh --server=/usr/bin/mosh-server you@server으로 직접 지정한다.
서버의 로그인 로케일이 UTF-8이 아니면 mosh-server은 클라이언트가 제공한 로케일 설정을 시도한 뒤 다시 확인한다. 이 설정으로도 UTF-8을 제공하지 못할 때만 실행을 거부하며 mosh-server needs a UTF-8 native locale to run.을 보고한다. 먼저 서버의 로케일을 수정한다.
locale
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8양쪽 모두 UTF-8 로케일이 필요하며, mosh-server도 클라이언트가 보낸 로케일 설정을 적용한다. 서버를 수정한 뒤에도 오류가 계속되면 휴대전화의 터미널 앱에서 LANG을 UTF-8 값으로 설정해야 한다. mosh의 자체 FAQ에서도 mosh-client에 이 설정이 필요할 수 있다고 설명한다.
mosh가 하지 않는 작업은 2가지다. mosh의 README에 따르면 mosh는 X forwarding이나 port forwarding을 포함한 SSH의 비대화형 사용을 지원하지 않는다. 따라서 Claude Code가 방금 시작한 웹 앱을 미리 보려면 일반 ssh -L 8080:127.0.0.1:8080 you@server이 여전히 필요하다. 또한 mosh는 현재 표시되는 화면만 동기화하므로 자체 scrollback이 없다. 이 두 번째 제한은 여기서 문제가 되지 않는다. tmux가 scrollback을 유지하기 때문이다. Ctrl-b 다음에 [을 누르면 copy mode로 들어가며, 드래그하거나 화살표 키를 사용해 스크롤할 수 있고, q을 누르면 copy mode에서 나간다.
휴대폰 화면을 사용하기 쉽게 만들기
서버의 ~/.tmux.conf에 있는 4줄이 대부분의 작업을 처리한다.
set -g mouse on
set -g status-position top
set -g default-terminal "tmux-256color"
set -g history-limit 20000mouse on은 터치 드래그를 스크롤로, 탭을 pane 또는 window 선택으로 바꾼다. 따라서 입력하기 불편한 prefix 키 대부분을 대신할 수 있다. status-position top는 tmux 상태 표시줄을 아래쪽 가장자리에서 옮긴다. 화면 키보드와 제안 표시줄이 아래쪽 가장자리를 가리기 때문이다. default-terminal은 tmux가 Claude Code에 알리는 터미널 이름을 고정한다. 이 줄이 없으면 tmux는 빌드에서 선택한 이름을 알린다. tmux 3.4 configure script는 screen에서 시작한 다음 screen-256color, tmux, tmux-256color을 이 순서대로 검사한다. 검사가 실패하면 이전 선택을 유지한다. 따라서 tmux-256color terminfo 항목을 찾지 못한 빌드는 tmux, screen-256color 또는 일반적인 screen이 된다. 그러면 색상과 상자 그리기가 필요한 수준보다 나쁘게 표시될 수 있다.
키 4개만 익히면 나머지는 편하게 사용할 수 있다.
Esc는 응답 중인 Claude를 중단하고 이미 완료한 작업은 유지한다. 따라서 엄지손가락 가까이에 두고 싶은 키다.Ctrl+C도 실행 중인 작업을 중단한다. 유휴 프롬프트에서 처음 누르면 입력을 지우고, 두 번째 누르면 Claude Code를 종료한다. 따라서 더 직접적인 도구다.Esc를 2번 누르면 초안 프롬프트를 지운다. 빈 프롬프트에서 누르면 대신 rewind 메뉴를 연다.- 여러 줄 프롬프트를 입력하려면
\를 입력한 다음 Enter를 누른다. 이 방식은 모든 터미널에서 동작한다. Shift+Enter는 일부 데스크톱 터미널에서만 기본 지원되며, 모바일 클라이언트는 그 목록에 포함되지 않는다.
분할 pane은 피한다. 세로 모드의 휴대폰은 폭이 약 40 columns이므로, 세로 분할을 사용하면 pane마다 20 columns만 남는다. 그러면 모든 diff가 줄바꿈되어 내용을 알아보기 어렵다. 대신 tmux window를 사용한다. Ctrl-b c은 window를 하나 만들고, Ctrl-b n은 다음 window로 이동한다. 두 번째 window에서 별도의 Claude Code 세션이 실행되면 두 세션이 직접 서로 작업을 넘길 수 있다. 터치스크린에서 window 사이로 텍스트를 복사할 필요가 없다. diff를 제대로 읽어야 할 때는 휴대폰을 가로로 돌린다.
화면에 표시되는 텍스트 양은 의도적으로 설정할 가치가 있다. output style은 모든 응답 뒤의 system prompt를 수정하기 때문이다. 더 간결한 output style을 사용하면 휴대폰에서 스크롤해야 하는 화면 수가 줄어든다.
작은 화면에서 긴 세션을 사용할 때는 대부분 context 문제가 발생한다. 따라서 기차에서 하루 종일 작업을 실행하기 전에 Claude Code context window 관리를 읽어 두는 것이 좋다.
보안을 강화하십시오: 키만 허용하고 비밀번호는 사용하지 않기
이제 휴대폰에는 코드를 편집하고 명령을 실행하는 시스템에 접속할 수 있는 키가 저장되어 있습니다. 비밀번호 인증을 끄십시오. sshd_config를 직접 편집하는 것보다 drop-in 파일을 사용하는 편이 안전합니다. Ubuntu의 sshd_config에는 맨 위에 /etc/ssh/sshd_config.d/*.conf가 포함되어 있으며, 설정에서 먼저 발견되는 값이 사용되기 때문입니다.
sudo tee /etc/ssh/sshd_config.d/00-phone.conf >/dev/null <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
EOF
sudo sshd -t && sudo systemctl reload sshdrop-in 파일은 파일 이름 순서대로 읽힙니다. sudo sshd -T에서 passwordauthentication no, kbdinteractiveauthentication no, pubkeyauthentication yes, permitrootlogin no를 확인하십시오. 이 중 하나를 설정하는 앞선 파일이 있으면 해당 설정이 우선 적용되므로 그 파일에서 수정해야 합니다.
sshd -t는 설정을 구문 분석하며, 설정이 올바르면 아무것도 출력하지 않습니다. 이 검사를 건너뛰면 오타 하나 때문에 reload 시 sshd가 실패합니다. 작업 중인 세션을 열어 둔 상태에서 두 번째 연결로 먼저 테스트한 다음 아무것도 닫으십시오. 잘못된 키를 사용하면 Permission denied (publickey).가 발생하고, 비밀번호를 꺼 둔 상태에서는 대체 접속 방법이 없기 때문입니다. 이때 복구하려면 provider의 console을 사용해야 합니다. 테스트 연결이 실패하면 첫 번째 세션이 아직 열려 있을 때 ssh -v로 다시 연결하고 문제를 해결하십시오. 오류 메시지 하나가 서로 다른 5가지 문제를 포괄하며, verbose 출력에서 실제 원인을 확인할 수 있습니다.
각 장치에 고유한 키를 사용하십시오. 그러면 휴대폰을 분실해도 ~/.ssh/authorized_keys에서 한 줄만 삭제하면 되고, 노트북은 계속 사용할 수 있습니다. 키 하나를 여러 장치에서 공유하면 사용하는 모든 장치에서 키를 변경해야 합니다.
Ubuntu 24.04에서 SSH를 다른 포트로 옮기는 경우 listener가 ssh.socket에 속한다는 점을 유의하십시오. systemd generator는 SSH 설정의 Port 행에서 해당 socket을 생성합니다. 따라서 ListenStream override는 필요하지 않습니다. 그러나 ssh만 다시 시작하면 서버는 port 22에서 계속 listening합니다. drop-in에 Port 행을 넣고, ufw에서 새 port를 허용한 다음 sudo systemctl daemon-reload을 실행하고 이어서 sudo systemctl restart ssh.socket을 실행하십시오. VPS에서 SSH 보안 강화하기에서 이 과정과 나머지 공격 표면을 설명합니다.
SSH용 fail2ban은 비밀번호를 끈 뒤에는 보안을 거의 높이지 못합니다. 추측한 비밀번호를 애초에 허용할 수 없기 때문입니다. 대신 로그가 조용해지므로 실제 login 시도를 쉽게 식별할 수 있습니다.
더 강력한 방법은 SSH를 public internet에서 차단하는 것입니다. 직접 운영하는 WireGuard VPN 뒤에 서버를 두고, 필요할 때 휴대폰에서 tunnel을 올린 다음, tunnel에서만 sshd가 ListenAddress를 사용하도록 하십시오. 양쪽이 UDP를 사용하므로 mosh는 tunnel을 통해 동작합니다. 한 가지 주의할 점은 tunnel이 packet overhead를 추가한다는 것입니다. 대용량 전송이 중단되면 휴대폰의 WireGuard config에서 MTU (maximum transmission unit)를 낮추십시오.
마지막으로 이 방식으로 작업할 때의 주의점이 하나 있습니다. 휴대폰에서는 한 번에 몇 줄의 diff만 표시되는 화면에서 permission prompt를 승인하게 됩니다. 이는 안전 장치를 끄라는 이유가 아니라 그대로 유지해야 할 이유입니다. 세션이 어떤 permission mode로 시작하는지도 확인하십시오. auto mode는 이제 기본 interactive terminal session 시작 모드입니다. Claude Code v2.1.283부터는 작업 디렉터리의 file edit를 사용자에게 묻지 않고 수행합니다. VPS에서 Claude Code 안전하게 실행하기에서는 주된 접속 수단이 touchscreen이 되기 전에 설정할 가치가 있는 user 및 directory 제한을 설명합니다.
다시 연결했을 때 문제가 있는 경우
tmux attach을 출력하면 no server running on /tmp/tmux-1000/default은 해당 socket에서 tmux server를 찾지 못했다는 뜻이다. 대부분 server가 종료된 상태이며, 이는 거의 항상 시스템이 재부팅되었다는 뜻이다. uptime로 확인한다. 시스템이 재부팅되지 않았고 pgrep tmux에 여전히 server가 표시된다면, 그것만으로 socket 파일이 삭제되었다고 볼 수는 없다. -L 및 -S flag를 사용하면 server가 다른 socket에서 수신할 수 있기 때문이다. 이 중 하나를 사용해 tmux를 시작했다면 tmux attach에도 같은 flag를 전달한다. socket이 실제로 실수로 삭제되었다면 pkill -USR1 tmux으로 server에 socket을 다시 만들도록 요청할 수 있다. tmux manual에 따르면 상위 디렉터리가 하나라도 없으면 이 작업은 실패한다. 자동 보안 업데이트를 통한 kernel update는 적용하려면 재부팅이 필요하다. 그러나 unattended-upgrades는 Unattended-Upgrade::Automatic-Reboot이 활성화된 경우에만 자동으로 재부팅한다. 기본값은 false이다. 시스템이 재부팅되면 tmux session은 남아 있지 않으므로, Claude Code 실행은 언제든 다시 시작할 수 있는 작업으로 취급한다.
can't find session: claude는 다릅니다. tmux 서버는 실행 중이지만 해당 이름은 존재하지 않습니다. tmux ls에는 실제로 존재하는 항목이 표시됩니다.
Claude Code가 있던 위치에 접속했을 때 일반 셸 프롬프트만 보인다면, 세션은 종료되지 않았지만 프로세스가 종료된 것입니다. dmesg -T | tail에서 Out of memory: Killed process 4821 (claude)와 같은 줄을 확인하면 out-of-memory로 프로세스가 종료되었음을 알 수 있습니다. 프롬프트 위쪽에 표시된 셸의 scrollback에서 다른 종료 메시지도 확인합니다.
창이 잘못된 크기로 다시 표시되거나, 가장자리에서 잘리거나, 주변에 사용하지 않는 공간이 생긴다면 두 클라이언트가 서로 다른 크기로 연결된 것입니다. 기본적으로 tmux 3.4는 가장 최근에 활동한 클라이언트에 맞춰 창 크기를 조정하므로(window-size latest), 너비가 200열인 상태로 계속 연결된 노트북과 너비가 40열인 휴대폰이 번갈아 창 크기를 변경합니다. 연결할 때 다른 클라이언트를 분리합니다: tmux attach -d -t claude.
FAQ
VPS가 아니라 휴대폰 자체에서 Claude Code를 실행할 수 있습니까?
터미널 CLI는 Android 또는 iOS를 지원하지 않습니다. 2026년 10월 기준 지원 플랫폼은 macOS, Windows, Ubuntu 20.04 이상, Debian 10 이상, Alpine 3.19 이상이며, RAM은 4 GB 이상이어야 합니다. Android와 iOS는 이 목록에 없습니다. 또한 휴대폰은 앱을 절전 상태로 전환하고 네트워크 주소를 계속 변경하므로 장시간 실행되는 에이전트를 안정적으로 유지할 수 없습니다. 서버에서 실행하고 휴대폰은 화면으로 사용하십시오.
앱을 닫거나 신호가 끊겨도 세션이 유지됩니까?
그렇습니다. 이 작업을 처리하는 요소는 2가지입니다. tmux는 서버에서 프로세스를 계속 실행하므로 연결이 종료되어도 프로세스가 중단되지 않습니다. mosh는 네트워크 주소가 변경되어도 연결 자체를 유지하므로 wifi에서 모바일 데이터로 전환해도 다시 연결할 필요가 없습니다. tmux 없이 일반 SSH만 사용하면 연결이 끊길 때 SIGHUP이 전송되고 Claude Code가 작업 중간에 중지됩니다.
mosh로 연결한 뒤 아무것도 표시되지 않는 이유는 무엇입니까?
로그인이 성공한 뒤 Nothing received from server on UDP port 60001. 상태에서 멈춘다면 클라이언트가 해당 UDP 포트에서 mosh-server에 연결할 수 없다는 뜻입니다. 일반적으로 방화벽이 UDP 60000에서 61000까지를 차단한 경우입니다. ufw에 해당 범위를 추가하고, 대부분의 패널에서 별도로 제공하는 공급자의 네트워크 방화벽에도 같은 범위를 추가하십시오. mosh가 대신 mosh-server을 찾을 수 없다고 보고한다면 서버에 패키지가 없거나 로그인 시 사용하는 PATH에 해당 명령이 포함되지 않은 것입니다. sudo apt install mosh로 설치하거나 mosh --server=/usr/bin/mosh-server you@server을 사용하십시오.
Esc 키가 없는 키보드에서 Claude Code를 중단하려면 어떻게 해야 합니까?
키 행을 추가하십시오. Termux에서는 ~/.termux/termux.properties에 extra-keys을 사용해 키 행을 구성할 수 있으며, Termius와 Blink에도 설정에서 편집할 수 있는 키 행이 기본 제공됩니다. Esc은 실행 중인 응답을 중단하고 이미 완료한 작업은 유지합니다. Ctrl+C도 중단 기능을 수행하지만, 유휴 프롬프트에서 2번 누르면 Claude Code가 종료됩니다. 따라서 먼저 Esc을 사용하십시오.
인터넷에 SSH를 공개해도 충분히 안전합니까?
암호 인증을 비활성화하면 성공할 수 있는 유일한 인증 수단은 장치를 벗어나지 않는 키입니다. 다시 구축할 수 있는 시스템이라면 이는 감수할 만한 위험입니다. 각 장치에 고유한 키를 부여하면 휴대폰을 잃어버려도 authorized_keys에서 1줄만 제거하면 됩니다. 공용 포트에서 응답하는 방식이 마음에 들지 않는다면 서버를 WireGuard 뒤에 두고 sshd가 터널 주소에서 수신하도록 구성하십시오.