SSD Nodes Learn 8GB 記憶體 — 每年 $66
指南 Matt Connor作者: Matt Connor · 已更新 2026-08-01

如何在手機上使用 Claude Code

Claude Code 在 VPS 的 tmux 中執行,手機只是顯示視窗。了解 SSH 金鑰、應對不穩定行動網路的 mosh、tmux attach,以及實際有用的手機鍵盤設定。

在手機上使用 Claude Code:實際運作方式

在手機上使用 Claude Code 並不是使用行動應用程式。Claude Code 會在 VPS(虛擬私人伺服器)上執行,位於持續開啟的 tmux 工作階段中。手機會透過 SSH(安全殼層)連線到該工作階段,並在你查看時維持連線。關閉應用程式後,代理程式仍會繼續執行,因為該程序從未在手機上執行。

這種分離方式是整體設計的核心。手機作業系統會在你切換離開應用程式幾秒後暫停它,因此在手機上啟動的長時間工作會停止。你從 wifi 切換到行動數據時,手機也會取得新的網路位址。當程序在伺服器上執行,而手機只負責顯示畫面時,這兩個問題都會消失。

伺服器需要四項元件:用來維持工作階段的 tmux、用來登入的 SSH 金鑰、因應網路變更的 mosh,以及 Claude Code 本身。手機端只需要一個具備可存取按鍵列的終端機應用程式。

VPS 上需要的環境

SSH 和 tmux 部分只需要一台小型 Ubuntu 24.04 主機即可。Claude Code 的需求較高。截至 2026 年 7 月,官方需求是 Ubuntu 20.04 或更新版本、x64 或 ARM64 處理器,以及 4 GB 以上的 RAM。1 GB 方案可以完成安裝,但在負載升高時,程序會被 kernel 終止。Claude Code 也需要付費的 Claude 帳戶(Pro、Max、Team 或 Enterprise),或具備 API 存取權的 Console 帳戶,因為免費的 Claude.ai 方案不包含此功能。

請以具備 sudo 權限的普通使用者設定主機,不要使用 root。如果伺服器是新的,請先完成新 VPS 的前 10 分鐘設定,因為完成使用者和防火牆設定後,再進行本指南後續的 SSH 變更會更容易。

sudo apt update && sudo apt install -y tmux mosh
curl -fsSL https://claude.ai/install.sh | bash
claude --version

安裝程式會將 binary 放在 ~/.local/bin/claude,而 claude --version 會輸出類似 2.1.211 (Claude Code) 的一行內容。如果輸出 command not found,表示該目錄尚未加入你的 PATH:登出後重新登入,再使用 command -v claude 檢查。claude doctor 會輸出安裝和設定診斷資訊,但不會啟動工作階段。

現在先從筆記型電腦登入一次,再依賴手機操作。在專案目錄中執行 claude,並依照登入提示操作。流程會要求你在瀏覽器中開啟 URL,再將代碼帶回終端機;在手機畫面上切換兩個應用程式完成這些操作會很慢。使用實體鍵盤完成一次即可,認證資訊會保留在伺服器上。

在 tmux 中啟動 Claude Code,避免連線中斷導致程序終止

tmux new -s claude
cd ~/projects/api
claude

使用 Ctrl-b 分離工作階段,然後使用 d。tmux 會顯示 [detached (from session claude)],並將控制權交還給 shell。現在您可以關閉應用程式、失去訊號,或將手機放入口袋。該窗格仍會繼續執行。

tmux ls
tmux attach -t claude

tmux ls 會逐行顯示每個工作階段,例如 claude: 1 windows (created Thu Jul 30 09:14:02 2026)tmux attach -t claude 會將您帶回離開時的位置,包括尚未完成一半的編輯內容。

這是因為 tmux 會執行自己的伺服器程序,而您的 shell 和 Claude Code 是該伺服器的子程序,不是 sshd 的子程序。SSH 連線結束時,核心會將 hangup 訊號 SIGHUP 傳送給附加至該連線的程序,而 tmux 伺服器不在其中。沒有 tmux 時,同樣會導致連線中斷的螢幕鎖定,會讓 Claude Code 在工具呼叫進行到一半時停止。在 VPS 的 tmux 中執行 Claude Code 會更深入說明工作階段配置。

請在伺服器上執行 tmux,不要在手機上執行。在已經附加的工作階段中輸入 tmux 會顯示 sessions should be nested with care, unset $TMUX to force;若強制執行,您就必須處理兩個互相爭用的前綴鍵。

每次登入時自動附加

在觸控鍵盤上輸入附加指令很快就會變得麻煩。將以下內容加到伺服器上的 ~/.profile 結尾:

if command -v tmux >/dev/null 2>&1 && [ -z "$TMUX" ] && [ -t 1 ]; then
  exec tmux new-session -A -s claude
fi

如果名為 claude 的工作階段存在,new-session -A -s claude 會附加至該工作階段;如果不存在,則會建立該工作階段。因此,一個指令即可處理這兩種情況。exec 會以 tmux 取代登入 shell,因此離開 tmux 時會關閉連線,而不是回到單純的提示字元。需要一般 shell 時,請略過此檔案:ssh you@server -t "bash --noprofile"

請將內容放在 ~/.profile,不要放在 ~/.bashrc~/.bashrc 也會對非互動式工作階段執行,因此會導致檔案傳輸失敗:scpsftp 會將非預期的輸出讀取為通訊協定資料,並因 Received message too long 而失敗。~/.profile 僅對登入 shell 執行,這正是互動式 SSH 工作階段的類型。

Ubuntu 也會在 ~/.profile 中將 ~/.local/bin 加入 PATH。如果登入後立即執行 claude 沒有問題,但 tmux 內的 shell 顯示 command not found,原因就是這個執行順序。因此,請如上所述從登入 shell 啟動 tmux,而不要從略過 profile 的指令碼啟動。

兩個應用程式都支援 SSH 和 mosh,也都會在應用程式中儲存金鑰。差異在於介面。

Blink Shell 以命令操作。在提示字元中輸入 ssh you@servermosh you@server,語法與桌面終端機相同。輸入 config 可開啟設定,而 Keys 區段會為您建立金鑰組。

Termius 以表單操作。您先填寫主機項目,再在主機詳細資料中將該主機從 SSH 切換為 Mosh。Termius 內建 mosh 實作,並支援 mosh 1.3.0 及更新版本,因此伺服器仍需安裝 mosh 套件。

兩種情況都應在應用程式內產生金鑰,絕不要將現有的私密金鑰複製到手機。應用程式會顯示公開金鑰部分;您只需將這一行加入伺服器上的 ~/.ssh/authorized_keys每部裝置的 SSH 金鑰及撤銷方式說明命名方式和撤銷步驟。對手機而言,這比對筆記型電腦更重要。

請啟用終端機應用程式本身的生物辨識或密碼鎖定功能。若未啟用,手機只要保持解鎖且螢幕持續亮起,就等同於在您的伺服器上開啟一個 shell。

Android:Termux

pkg upgrade
pkg install openssh mosh
ssh-keygen -t ed25519 -C "pixel"
cat ~/.ssh/id_ed25519.pub

Termux 在自己的套件儲存庫中提供 OpenSSH 和 mosh,因此 sshssh-keygenmosh 的行為與桌面環境相同。將輸出的公開金鑰行新增至伺服器上的 ~/.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 處於背景時停止它。在此情況下,您只需重新連線,不會遺失其他內容。工作階段和代理程式都在伺服器上。

為什麼離開 Wi-Fi 後終端機會凍結?mosh 能解決什麼問題?

SSH 連線是 TCP(傳輸控制通訊協定)連線,而 TCP 連線由兩端的位址和連接埠共同識別。離開 Wi-Fi 覆蓋範圍後,手機會從行動網路取得新的位址,因此舊連線在兩端都找不到相符項目。系統不會通知你。終端機只會停止回應,直到 TCP 放棄,接著 ssh 會顯示 client_loop: send disconnect: Broken pipe。若要立即終止凍結的工作階段,請依序按下 Enter~.

mosh(行動 shell)可消除這種故障模式。它只使用 SSH 登入並啟動 mosh-server 程序,讀回伺服器選取的 UDP(使用者資料包通訊協定)連接埠,然後關閉 SSH 連線。之後,兩端會使用共用的工作階段金鑰,交換經驗證的 UDP 資料包。因此,工作階段是由該金鑰而非你的位址識別。位址變更後,工作階段仍會繼續。mosh 也會在本機回顯你的輸入,並在伺服器內容不一致時重新繪製畫面,因此在緩慢的行動網路上仍可使用。

mosh 使用 60000 到 61000 之間的 UDP 連接埠,因此請開放此範圍:

sudo ufw allow 60000:61000/udp
sudo ufw status

使用 ufw 開放連接埠 說明其餘的防火牆設定。如果你的服務供應商在控制面板中提供獨立的網路防火牆,也請在該處加入相同範圍,因為 ufw 規則無法影響位於伺服器前方的篩選器。

mosh 常見兩種故障。登入成功後隨即停滯,並顯示 Nothing received from server on UDP port 60001.,表示手機與伺服器之間的某處封鎖了該 UDP 範圍。連線回報找不到 mosh-server,表示伺服器上缺少該套件,或登入 PATH 中沒有該套件。請安裝它,或使用 mosh --server=/usr/bin/mosh-server you@server 直接指定其位置。

當登入地區設定不是 UTF-8 時,mosh 也會拒絕執行,並顯示: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

mosh 有兩項無法處理的功能。其 README 指出,mosh 不支援 X forwarding 或 SSH 的非互動式用途,包括連接埠轉送。因此,若要預覽 Claude Code 剛啟動的 Web 應用程式,仍需使用一般的 ssh -L 8080:127.0.0.1:8080 you@server。此外,mosh 只會同步可見的畫面,因此本身沒有捲動記錄。這項限制在此不會造成影響,因為 tmux 會保留捲動記錄:Ctrl-b,接著 [ 進入複製模式;拖曳或使用方向鍵捲動,然後按 q 離開。

讓手機螢幕便於使用

伺服器上的 ~/.tmux.conf 中有 4 行設定會完成大部分工作:

set -g mouse on
set -g status-position top
set -g default-terminal "tmux-256color"
set -g history-limit 20000

mouse on 會將觸控拖曳轉換為捲動,並將點選轉換為窗格或視窗選取。這取代了大部分難以輸入的前綴鍵。status-position top 會將 tmux 狀態列從底部移開,避免被螢幕鍵盤及其建議列遮住。default-terminal 很重要,因為否則 tmux 會向 Claude Code 宣告 screen 終端機,導致色彩和框線繪製效果不如預期。如果 tmux 接著因 missing or unsuitable terminal: tmux-256color 而拒絕啟動,表示缺少 terminfo 項目:sudo apt install ncurses-term

熟悉 4 個按鍵後,其餘操作就很順暢。

  • Esc 會中斷 Claude 目前的回應,但保留已完成的工作,因此應放在最容易用拇指按到的位置。
  • Ctrl+C 也會中斷執行中的操作。在閒置提示字元處,第一次按下會清除輸入,第二次按下會結束 Claude Code,因此它是較直接的工具。
  • 連按兩次 Esc 會清除草稿提示;在空白提示字元處,則會改為開啟復原選單。
  • 若要輸入多行提示,請輸入 \,然後按 Enter。這種方式適用於所有終端機。Shift+Enter 僅原生適用於少數桌面終端機,行動版用戶端不在其中。

避免使用分割窗格。手機直向時寬度約為 40 欄,因此垂直分割後每個窗格只有 20 欄,所有差異內容都會換行成難以閱讀的雜訊。請改用 tmux 視窗:Ctrl-b c 會建立視窗,Ctrl-b n 會移至下一個視窗。需要正確閱讀差異內容時,請將手機轉為橫向。

在小螢幕上執行長時間工作時,主要問題通常是內容脈絡。因此,在火車上嘗試執行一整天的工作前,值得先閱讀 管理 Claude Code 內容脈絡視窗

鎖定安全性:僅使用金鑰,不使用密碼

手機現在持有可存取伺服器的金鑰,而該伺服器能編輯您的程式碼並執行命令。請關閉密碼驗證。使用 drop-in 檔案比直接編輯 sshd_config 更安全,因為 Ubuntu 的 sshd_config 會在頂端載入 /etc/ssh/sshd_config.d/*.conf,而設定值會採用第一個找到的值。

sudo tee /etc/ssh/sshd_config.d/99-phone.conf >/dev/null <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
EOF
sudo sshd -t && sudo systemctl reload ssh

sshd -t 會剖析設定;設定有效時不會輸出任何內容。若略過此步驟,任何拼寫錯誤都會導致 sshd 重新載入時失敗。請保持目前的工作階段開啟,並從第二個連線測試後再關閉任何連線,因為錯誤的金鑰會立即導致 Permission denied (publickey).,而關閉密碼驗證後沒有備援方式。此時的復原途徑是使用供應商的主控台。

請為每台裝置使用不同的金鑰。若手機遺失,只需從 ~/.ssh/authorized_keys 刪除一行,筆記型電腦仍可繼續使用。若所有裝置共用一把金鑰,您就必須在每台裝置上更換金鑰。

如果您在 Ubuntu 24.04 將 SSH 移至其他連接埠,請注意監聽器隸屬於 ssh.socket,因此單獨加入 Port 行不會產生任何作用。執行 sudo systemctl edit ssh.socket,使用空白的 ListenStream= 清除預設值,然後在下一行設定您的連接埠。在 VPS 上強化 SSH 說明這項設定及其他攻擊面。

為 SSH 設定 fail2ban 在關閉密碼驗證後只能增加少量安全性,因為系統根本不會接受猜測出的密碼。它能提供的是更簡潔的記錄,讓您容易發現真正的登入嘗試。

更安全的做法是讓 SSH 不直接暴露在公用網際網路上。將伺服器置於自行託管的 WireGuard VPN 後方,依需要在手機上啟用通道,並只在通道上為 sshd 設定 ListenAddress。mosh 可透過通道運作,因為兩端都使用 UDP。請注意:通道會增加封包負擔,因此如果大型傳輸停滯,請在手機的 WireGuard 設定中降低 MTU(maximum transmission unit,最大傳輸單位)。

最後說明這種工作方式的一點限制。使用手機時,您會在一次只顯示幾行差異的畫面上核准權限提示。這正是應保留防護措施,而不是將其關閉的理由。在 VPS 上安全地執行 Claude Code 說明在主要進入方式是觸控螢幕之前,值得設定的使用者與目錄限制。

重新連接後發現異常

tmux attach 顯示 no server running on /tmp/tmux-1000/default,表示 tmux 伺服器已消失。這通常表示機器已重新開機。使用 uptime 檢查。自動安全性更新 安裝核心更新後會重新啟動機器。重新啟動後的機器沒有 tmux 工作階段,因此應將任何 Claude Code 執行作業視為可重新啟動的工作。

can't find session: claude 的情況不同。tmux 伺服器仍在執行,但不存在該名稱。tmux ls 會顯示目前存在的工作階段。

如果連接後看到的是一般 shell 提示字元,而不是原本執行 Claude Code 的畫面,表示處理程序已結束,但工作階段仍未結束。查看 dmesg -T | tail,尋找類似 Out of memory: Killed process 4821 (claude) 的行。當機器的記憶體低於 4 GB 要求,且執行大型編輯作業時,就會出現這種情況。如果沒有該行,表示 Claude Code 自行結束。shell 提示字元上方的回捲內容會保留原因。

如果視窗恢復後變得很小,周圍有未使用的空間,表示有 2 個用戶端以不同大小連接。tmux 會將視窗大小調整為符合最小的連線用戶端。您的筆記型電腦仍以 200 欄寬度保留該工作階段,但手機要求 40 欄。連接時讓其他用戶端分離:tmux attach -d -t claude

FAQ

我可以直接在手機上執行 Claude Code,而不是在 VPS 上執行嗎?

不行。截至 2026 年 7 月,支援的平台為 macOS、Windows、Ubuntu 20.04 或更新版本、Debian 10 或更新版本,以及 Alpine 3.19 或更新版本,且需要 4 GB 以上的 RAM。Android 和 iOS 不在支援清單中。手機也會讓應用程式進入休眠,並持續變更網路位址,這些情況都不適合長時間執行代理程式。請在伺服器上執行,並將手機作為顯示器使用。

如果我關閉應用程式或失去訊號,工作階段還會保留嗎?

會,這由兩個不同的元件負責。tmux 會讓程序繼續在伺服器上執行,因此連線結束時不會停止任何工作。mosh 會在位址變更時維持連線,因此從 wifi 切換到行動數據時,甚至不需要重新連線。若只使用 SSH 而未使用 tmux,連線中斷會傳送 SIGHUP,Claude Code 會在工作進行到一半時停止。

為什麼 mosh 連線後沒有顯示任何內容?

登入成功後顯示 Nothing received from server on UDP port 60001. 並停滯,表示 UDP 60000 到 61000 未開放。請在 ufw 中加入這個連接埠範圍,也要在提供者的網路防火牆中再次加入;大多數控制面板會將它作為獨立的控制項。如果 mosh 改為回報找不到 mosh-server,表示伺服器缺少該套件:sudo apt install mosh

沒有 Esc 鍵時,如何使用鍵盤中斷 Claude Code?

請新增一列按鍵。Termux 可在 ~/.termux/termux.properties 中使用 extra-keys 進行設定,Termius 和 Blink 也都提供可在設定中編輯的按鍵列。Esc 會中斷目前執行中的回應,並保留已完成的工作。Ctrl+C 也會中斷執行,但在閒置提示字元中按兩次會結束 Claude Code,因此請優先使用 Esc

將 SSH 開放到網際網路是否足夠安全?

關閉密碼驗證後,唯一能成功驗證的憑證就是不會離開裝置的金鑰。對於可以重建的機器而言,這是合理的風險。請為每部裝置使用獨立的金鑰,這樣手機遺失時,只需從 authorized_keys 移除一行。如果您不想在公開連接埠上接受連線,可以將該主機置於 WireGuard 後方,並讓 sshd 監聽通道位址。