SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor · Dikemas kini 2026-08-27

Cara Gunakan Claude Code Melalui Telefon Pintar

Jalankan Claude Code pada VPS menggunakan tmux dan SSH. Ketahui cara mengkonfigurasi mosh untuk sambungan stabil serta baris kekunci terminal agar kerja anda tidak terhenti.

Claude Code daripada telefon anda: cara ia benar-benar berfungsi

Claude Code daripada telefon anda bukanlah aplikasi mudah alih. Claude Code berjalan pada VPS (virtual private server), di dalam sesi tmux yang kekal terbuka, dan telefon anda membuka sambungan SSH (secure shell) ke sesi tersebut selagi anda melihatnya. Tutup aplikasi tersebut dan ejen itu akan terus berfungsi, kerana proses tersebut tidak pernah dijalankan pada telefon.

Pemisahan itu adalah keseluruhan reka bentuknya. Sistem pengendalian telefon akan menggantung aplikasi beberapa saat selepas anda beralih daripadanya, jadi sebarang tugasan panjang yang dimulakan pada telefon akan terhenti. Ia juga mendapat alamat rangkaian baharu setiap kali anda beralih daripada wifi kepada data mudah alih. Kedua-dua masalah ini selesai apabila proses dijalankan pada pelayan dan telefon hanya memaparkan skrin.

Anda memerlukan empat perkara pada pelayan: tmux untuk mengekalkan sesi, kunci SSH untuk masuk, mosh untuk perubahan rangkaian, dan Claude Code itu sendiri. Bahagian telefon pula ialah satu aplikasi terminal dengan baris kekunci yang boleh anda capai.

Keperluan pada VPS

Sebuah pelayan Ubuntu 24.04 yang kecil sudah memadai untuk bahagian SSH dan tmux. Claude Code memerlukan spesifikasi yang lebih tinggi. Keperluan rasmi setakat Julai 2026 ialah Ubuntu 20.04 atau lebih baharu pada pemproses x64 atau ARM64, dengan RAM sebanyak 4 GB atau lebih. Pelan 1 GB membolehkan pemasangan dilakukan, namun proses akan ditamatkan oleh kernel apabila beban meningkat. Claude Code juga memerlukan akaun Claude berbayar (Pro, Max, Team atau Enterprise) atau akaun Console dengan akses API, kerana pelan percuma Claude.ai tidak menyertakannya.

Sediakan pelayan sebagai pengguna biasa dengan sudo, bukan sebagai root. Jika pelayan tersebut baharu, selesaikan sepuluh minit pertama pada VPS baharu terlebih dahulu, kerana perubahan SSH dalam panduan ini lebih mudah dilakukan setelah pengguna dan firewall sedia ada.

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

Pemasang meletakkan fail binari di ~/.local/bin/claude, dan claude --version akan memaparkan baris seperti 2.1.211 (Claude Code). Jika ia memaparkan command not found, direktori tersebut belum lagi berada dalam PATH anda: log keluar, log masuk semula, kemudian semak dengan command -v claude. claude doctor akan memaparkan diagnostik pemasangan dan tetapan tanpa memulakan sesi.

Log masuk sekali sekarang, daripada komputer riba, sebelum anda bergantung pada telefon. Jalankan claude dalam direktori projek dan ikuti arahan log masuk. Proses ini meminta anda membuka URL dalam pelayar dan membawa kod kembali ke terminal; mengendalikan dua aplikasi pada skrin telefon untuk melakukan perkara ini adalah perlahan. Lakukan sekali pada papan kekunci sebenar dan kelayakan tersebut akan kekal pada pelayan.

Mulakan Claude Code di dalam tmux supaya sambungan yang terputus tidak mematikannya

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

Nyahlampir (detach) dengan Ctrl-b dan kemudian d. tmux akan memaparkan [detached (from session claude)] dan mengembalikan shell kepada anda. Sekarang, tutup aplikasi, biarkan isyarat terputus, atau simpan telefon di dalam poket anda. Anak tetingkap (pane) tersebut akan terus berjalan.

tmux ls
tmux attach -t claude

tmux ls mencetak satu baris bagi setiap sesi, contohnya claude: 1 windows (created Thu Jul 30 09:14:02 2026). tmux attach -t claude mengembalikan anda tepat ke tempat anda berhenti, termasuk suntingan yang belum selesai.

Ini berfungsi kerana tmux menjalankan proses pelayannya sendiri, dan shell serta Claude Code anda merupakan anak proses kepada pelayan tersebut, bukannya kepada sshd. Apabila sambungan SSH berakhir, kernel menghantar isyarat hangup, SIGHUP, kepada proses yang dilampirkan pada sambungan tersebut, dan pelayan tmux bukanlah salah satu daripadanya. Tanpa tmux, kunci skrin yang sama yang memutuskan sambungan anda akan menghentikan Claude Code di tengah-tengah panggilan alat (tool call). Menjalankan Claude Code pada VPS di dalam tmux membincangkan susun atur sesi dengan lebih mendalam.

Jalankan tmux pada pelayan, jangan sekali-kali pada telefon. Menaip tmux di dalam sesi yang anda sudah lampirkan akan mencetak sessions should be nested with care, unset $TMUX to force, dan memaksanya akan menyebabkan dua kekunci awalan (prefix keys) bertindih.

Melampirkan secara automatik pada setiap log masuk

Menaip arahan lampiran pada papan kekunci sentuh menjadi leceh. Letakkan kod ini di hujung ~/.profile pada pelayan:

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

new-session -A -s claude melampirkan sesi bernama claude jika ia wujud dan menciptanya jika tidak, jadi satu arahan merangkumi kedua-dua keadaan. exec menggantikan shell log masuk dengan tmux, jadi keluar daripada tmux akan menutup sambungan dan bukannya meninggalkan anda pada prompt kosong. Apabila anda memerlukan shell biasa, langkau fail tersebut: ssh you@server -t "bash --noprofile".

Letakkannya dalam ~/.profile dan bukan dalam ~/.bashrc. ~/.bashrc juga berjalan untuk sesi bukan interaktif, jadi pemindahan fail akan tergendala: scp dan sftp membaca output yang tidak dijangka sebagai data protokol dan gagal dengan Received message too long. ~/.profile hanya berjalan untuk shell log masuk, iaitu sesi SSH interaktif.

~/.profile juga merupakan tempat Ubuntu menambah ~/.local/bin ke PATH. Jika claude berfungsi dengan betul selepas log masuk tetapi shell di dalam tmux menyatakan command not found, susunan tersebut adalah puncanya, jadi mulakan tmux daripada shell log masuk seperti di atas dan bukannya daripada skrip yang melangkau profil.

Kedua-dua aplikasi ini menyokong SSH dan mosh, serta menyimpan kunci di dalam aplikasi. Perbezaannya terletak pada antara muka.

Blink Shell dipacu oleh arahan. Pada prompt, anda menaip ssh you@server atau mosh you@server, menggunakan sintaks yang sama seperti terminal desktop. Tetapan dibuka dengan menaip config, dan bahagian Keys akan menjana pasangan kunci untuk anda.

Termius dipacu oleh borang. Anda perlu mengisi entri hos, kemudian menukar hos tersebut daripada SSH kepada Mosh dalam perincian hos. Termius membekalkan implementasi mosh sendiri dan menyokong mosh 1.3.0 serta versi yang lebih baharu, jadi pelayan masih perlu mempunyai pakej mosh dipasang.

Jana kunci di dalam aplikasi bagi kedua-dua kes, dan jangan sekali-kali menyalin kunci peribadi (private key) sedia ada ke dalam telefon. Aplikasi akan memaparkan bahagian kunci awam (public key), iaitu satu baris teks yang perlu anda tambah ke dalam ~/.ssh/authorized_keys pada pelayan. Kunci SSH bagi setiap peranti dan cara membatalkannya merangkumi langkah penamaan dan pembatalan, yang lebih penting bagi telefon berbanding komputer riba.

Aktifkan kunci biometrik atau kod laluan milik aplikasi terminal itu sendiri. Tanpanya, telefon yang tidak berkunci akan menjadi shell terbuka ke pelayan anda selagi skrin masih menyala.

Android: Termux

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

Termux membungkus OpenSSH dan mosh dalam repositori tersendiri, jadi ssh, ssh-keygen dan mosh berfungsi seperti yang dilakukan pada desktop. Tambahkan baris kunci awam yang dipaparkan ke dalam ~/.ssh/authorized_keys pada pelayan, kemudian sambungkan dengan mosh you@server.

Papan kekunci pada skrin Android tidak mempunyai kekunci Esc dan kekunci Ctrl, sedangkan Claude Code memerlukan kedua-duanya. Termux boleh memaparkan baris kekunci sendiri. Letakkan satu baris dalam ~/.termux/termux.properties:

extra-keys = [['ESC','|','/','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]

Kemudian jalankan termux-reload-settings dan baris tersebut akan muncul di atas papan kekunci. Muat semula yang sama juga akan mengesan fon TrueType monospace yang diletakkan di ~/.termux/font.ttf.

Android mungkin menghentikan Termux semasa ia berjalan di latar belakang, dan dalam kes ini, ia tidak menjejaskan apa-apa selain perlu menyambung semula. Sesi dan ejen berada pada pelayan.

Mengapa terminal terhenti apabila saya meninggalkan Wi-Fi, dan apakah yang diselesaikan oleh mosh?

Sambungan SSH ialah sambungan TCP (transmission control protocol), dan sambungan TCP dikenal pasti oleh kedua-dua alamat serta kedua-dua port. Apabila anda keluar dari julat Wi-Fi, telefon anda mendapat alamat baharu daripada rangkaian mudah alih, jadi sambungan lama tidak lagi sepadan pada kedua-dua hujung. Tiada apa-apa yang memaklumkan perkara ini. Terminal hanya berhenti bertindak balas sehingga TCP berputus asa, dan kemudian ssh mencetak client_loop: send disconnect: Broken pipe. Untuk menamatkan sesi yang terhenti dengan serta-merta, tekan Enter, kemudian ~, dan seterusnya ..

mosh (mobile shell) menghapuskan mod kegagalan tersebut. Ia menggunakan SSH sekali untuk log masuk dan memulakan proses mosh-server, membaca semula port UDP (user datagram protocol) yang dipilih oleh pelayan, dan menutup sambungan SSH. Selepas itu, kedua-dua pihak bertukar-tukar datagram UDP yang disahkan dengan kunci sesi kongsi, jadi sesi tersebut dikenal pasti oleh kunci itu dan bukannya oleh alamat anda. Alamat baharu hanya akan meneruskan sesi sedia ada. mosh juga memaparkan input taipan anda secara setempat dan melukis semula skrin apabila pelayan tidak bersetuju, itulah sebabnya ia kekal boleh digunakan pada pautan mudah alih yang perlahan.

mosh menggunakan port UDP antara 60000 dan 61000, jadi buka julat tersebut:

sudo ufw allow 60000:61000/udp
sudo ufw status

Membuka port dengan ufw mempunyai gambaran penuh mengenai firewall. Jika pembekal anda menawarkan firewall rangkaian berasingan dalam panel kawalan mereka, tambahkan julat yang sama di sana juga, kerana peraturan ufw tidak boleh menjejaskan penapis yang berada di hadapan mesin.

Dua kegagalan mosh adalah perkara biasa. Log masuk yang berjaya tetapi kemudian terhenti, memaparkan Nothing received from server on UDP port 60001., bermakna julat UDP disekat di suatu tempat antara telefon dan pelayan. Sambungan yang melaporkan mosh-server tidak ditemui bermakna pakej tersebut tiada pada pelayan atau tiada dalam PATH log masuk. Pasang pakej tersebut, atau tunjukkan lokasinya secara terus dengan mosh --server=/usr/bin/mosh-server you@server.

mosh juga enggan berjalan apabila locale log masuk bukan UTF-8, dan menyatakan perkara tersebut: mosh-server needs a UTF-8 native locale to run. Betulkan locale pada pelayan, bukan pada telefon.

locale
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8

Terdapat dua perkara yang tidak dilakukan oleh mosh. README-nya menyatakan bahawa mosh tidak menyokong X forwarding atau penggunaan SSH bukan interaktif, termasuk port forwarding, jadi pratonton aplikasi web yang baru dimulakan oleh Claude Code masih memerlukan ssh -L 8080:127.0.0.1:8080 you@server biasa. Ia juga hanya menyegerakkan skrin yang kelihatan, jadi ia tidak mempunyai scrollback sendiri. Had kedua itu tidak menjadi masalah di sini, kerana tmux mengekalkan scrollback: Ctrl-b kemudian [ memasuki mod salin, seretan atau kekunci anak panah akan menatal, dan q akan keluar.

Menjadikan skrin telefon boleh digunakan

Empat baris dalam ~/.tmux.conf pada pelayan melakukan kebanyakan kerja tersebut:

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

mouse on menukar seretan sentuh kepada skrol dan ketikan kepada pemilihan anak tetingkap atau tetingkap, yang menggantikan kebanyakan kekunci awalan yang sukar ditaip. status-position top mengalihkan bar status tmux dari pinggir bawah, tempat papan kekunci pada skrin dan bar cadangannya menutup bar tersebut. default-terminal penting kerana jika tidak, tmux akan mengumumkan terminal screen kepada Claude Code, dan warna serta lukisan kotak akan kelihatan lebih buruk daripada yang sepatutnya. Jika tmux kemudian enggan bermula dengan missing or unsuitable terminal: tmux-256color, entri terminfo tiada: sudo apt install ncurses-term.

Pelajari empat kekunci dan selebihnya akan menjadi selesa.

  • Esc mengganggu Claude di pertengahan respons dan mengekalkan kerja yang telah siap, jadi ia adalah kekunci yang anda mahu letakkan paling dekat dengan ibu jari anda.
  • Ctrl+C juga mengganggu operasi yang sedang berjalan. Pada gesaan melahu, tekan kali pertama akan mengosongkan input dan tekan kali kedua akan keluar daripada Claude Code, jadi ia adalah alat yang lebih kasar.
  • Esc dua kali akan mengosongkan draf gesaan, dan pada gesaan kosong ia akan membuka menu undur (rewind) sebaliknya.
  • Untuk gesaan berbilang baris, taip \ kemudian tekan Enter. Format itu berfungsi dalam setiap terminal. Shift+Enter hanya asli dalam senarai pendek terminal desktop, dan klien mudah alih tidak termasuk di dalamnya.

Elakkan pembahagian anak tetingkap (split panes). Telefon dalam mod potret mempunyai lebar sekitar 40 lajur, jadi pembahagian menegak akan meninggalkan 20 lajur setiap anak tetingkap dan setiap diff akan melilit menjadi gangguan visual. Gunakan tetingkap tmux sebaliknya: Ctrl-b c mencipta satu tetingkap dan Ctrl-b n beralih ke tetingkap seterusnya. Jika tetingkap kedua akhirnya memegang sesi Claude Code sendiri, kedua-dua sesi boleh menyerahkan kerja kepada satu sama lain secara terus dan bukannya anda menyalin teks antara tetingkap pada skrin sentuh. Pusingkan telefon ke sisi apabila anda perlu membaca diff dengan betul.

Jumlah teks yang dipaparkan pada skrin itu wajar ditetapkan dengan sengaja kerana gaya output mengubah suai system prompt di sebalik setiap balasan, dan gaya yang lebih ringkas bermakna lebih sedikit paparan skrin untuk ditatal pada telefon.

Sesi yang panjang pada skrin kecil kebanyakannya adalah masalah konteks, jadi mengurus tetingkap konteks Claude Code berbaloi untuk dibaca sebelum anda cuba menjalankan kerja sehari penuh dari dalam kereta api.

Kunci akses: hanya kunci, tiada kata laluan

Telefon anda kini menyimpan kunci untuk mesin yang menyunting kod dan menjalankan arahan. Matikan pengesahan kata laluan. Fail drop-in adalah lebih selamat daripada menyunting sshd_config secara terus, kerana sshd_config pada Ubuntu menyertakan /etc/ssh/sshd_config.d/*.conf di bahagian atas dan nilai pertama yang ditemui untuk sesuatu tetapan akan digunakan.

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 akan menghuraikan konfigurasi dan tidak memaparkan apa-apa jika ia sah. Jangan langkau langkah ini kerana satu kesilapan taip bermakna sshd akan gagal semasa dimuat semula. Pastikan sesi kerja anda terbuka dan buat ujian daripada sambungan kedua sebelum anda menutup apa-apa, kerana kunci yang salah kini akan menyebabkan Permission denied (publickey). dan, dengan kata laluan dimatikan, tiada jalan keluar. Laluan pemulihan pada ketika itu adalah konsol pembekal anda.

Berikan setiap peranti kunci sendiri. Kehilangan telefon bermakna anda hanya perlu memadam satu baris daripada ~/.ssh/authorized_keys, dan komputer riba anda akan terus berfungsi. Satu kunci yang dikongsi bermakna anda perlu menukar kunci pada setiap peranti yang anda miliki.

Jika anda memindahkan SSH ke port lain pada Ubuntu 24.04, ambil perhatian bahawa pendengar (listener) adalah milik ssh.socket, jadi baris Port sahaja tidak akan mengubah apa-apa. Jalankan sudo systemctl edit ssh.socket, kosongkan lalai dengan ListenStream= yang kosong, kemudian tetapkan port anda pada baris seterusnya. Mengeraskan SSH pada VPS merangkumi perkara itu dan bahagian permukaan yang lain.

fail2ban untuk SSH menambah sedikit keselamatan sebaik sahaja kata laluan dimatikan, kerana kata laluan yang diteka tidak akan diterima sama sekali. Apa yang ia tambah ialah log yang lebih bersih, yang memudahkan percubaan log masuk sebenar dikesan.

Pilihan yang lebih kukuh adalah dengan memastikan SSH tidak terdedah kepada internet awam. Letakkan pelayan di sebalik VPN WireGuard yang anda hos sendiri, aktifkan tunnel pada telefon apabila diperlukan, dan berikan ListenAddress kepada sshd pada tunnel tersebut sahaja. mosh berfungsi melalui tunnel kerana kedua-dua pihak menggunakan UDP. Satu peringatan: tunnel menambah overhead paket, jadi jika pemindahan besar terhenti, rendahkan MTU (maximum transmission unit) dalam konfigurasi WireGuard telefon anda.

Satu perkara terakhir tentang bekerja dengan cara ini. Dari telefon, anda meluluskan gesaan kebenaran pada skrin yang memaparkan beberapa baris diff pada satu masa. Itu adalah sebab untuk mengekalkan kawalan keselamatan dan bukannya mematikannya. Menjalankan Claude Code dengan selamat pada VPS merangkumi had pengguna dan direktori yang perlu ditetapkan sebelum cara utama anda masuk adalah melalui skrin sentuh.

Apabila anda menyambung semula dan berlaku masalah

tmux attach printing no server running on /tmp/tmux-1000/default bermaksud pelayan tmux telah terhenti, yang hampir selalu bermakna mesin telah but semula. Semak dengan uptime. Kemas kini kernel daripada kemas kini keselamatan automatik akan but semula kotak tersebut, dan kotak yang telah but semula tidak mempunyai sesi tmux, jadi anggap sebarang pelaksanaan Claude Code sebagai sesuatu yang boleh anda mulakan semula.

can't find session: claude adalah berbeza. Pelayan tmux sedang berjalan tetapi nama itu tiada di sana. tmux ls menunjukkan apa yang sebenarnya wujud.

Jika anda menyambung dan mendapati prompt shell biasa di tempat Claude Code sepatutnya berada, proses tersebut telah berakhir tanpa sesi itu ditamatkan. Lihat dmesg -T | tail untuk baris seperti Out of memory: Killed process 4821 (claude), iaitu perkara yang berlaku pada kotak di bawah keperluan 4 GB semasa penyuntingan besar. Tiada baris sedemikian bermakna Claude Code telah keluar dengan sendirinya, dan scrollback shell di atas prompt mengandungi puncanya.

Tetingkap yang kembali dalam saiz kecil, dengan ruang tidak digunakan di sekelilingnya, bermakna dua klien disambungkan pada saiz yang berbeza, kerana tmux menetapkan saiz tetingkap mengikut klien yang disambungkan dengan saiz paling kecil. Komputer riba anda masih memegang sesi pada lebar 200 lajur manakala telefon meminta 40. Putuskan sambungan yang lain semasa anda menyambung: tmux attach -d -t claude.

FAQ

Bolehkah saya menjalankan Claude Code pada telefon itu sendiri dan bukannya pada VPS?

Tidak. Platform yang disokong setakat Julai 2026 ialah macOS, Windows, Ubuntu 20.04 atau lebih baharu, Debian 10 atau lebih baharu, dan Alpine 3.19 atau lebih baharu, dengan RAM 4 GB atau lebih. Android dan iOS tidak termasuk dalam senarai tersebut. Telefon juga akan meletakkan aplikasi dalam mod tidur dan menukar alamat rangkaian secara berterusan, yang mana tidak dapat ditampung oleh proses ejen yang berjalan lama. Jalankan ia pada pelayan dan gunakan telefon sebagai paparan sahaja.

Adakah sesi akan bertahan jika saya menutup aplikasi atau kehilangan isyarat?

Ya, dan dua komponen berasingan melakukan tugas tersebut. tmux memastikan proses terus berjalan pada pelayan, jadi tiada apa yang terhenti apabila sambungan berakhir. mosh memastikan sambungan itu sendiri kekal aktif merentasi perubahan alamat, jadi bertukar daripada wifi kepada data mudah alih tidak memerlukan anda menyambung semula. Dengan SSH biasa tanpa tmux, sambungan yang terputus akan menghantar SIGHUP dan Claude Code akan berhenti di tengah-tengah tugasan.

Mengapa mosh bersambung tetapi tidak memaparkan apa-apa?

Log masuk yang berjaya tetapi kemudian terhenti dengan Nothing received from server on UDP port 60001. bermakna port UDP 60000 hingga 61000 tidak dibuka. Tambahkan julat tersebut dalam ufw, dan tambahkannya sekali lagi dalam firewall rangkaian pembekal anda, yang merupakan kawalan berasingan pada kebanyakan panel. Jika mosh sebaliknya melaporkan bahawa mosh-server tidak ditemui, pelayan tersebut kekurangan pakej: sudo apt install mosh.

Bagaimanakah cara saya menghentikan Claude Code daripada papan kekunci yang tiada kekunci Esc?

Tambahkan baris kekunci. Termux mengkonfigurasinya dengan extra-keys dalam ~/.termux/termux.properties, manakala Termius dan Blink kedua-duanya menyediakan baris yang boleh anda edit dalam tetapan. Esc menghentikan respons yang sedang berjalan dan mengekalkan kerja yang telah siap. Ctrl+C juga menghentikan proses, tetapi menekannya dua kali pada prompt yang melahu akan mengeluarkan anda daripada Claude Code, jadi gunakan Esc terlebih dahulu.

Adakah membuka SSH kepada internet cukup selamat untuk tujuan ini?

Dengan pengesahan kata laluan dimatikan, satu-satunya kelayakan yang boleh berjaya ialah kunci yang tidak pernah meninggalkan peranti anda, yang merupakan risiko munasabah bagi mesin yang boleh anda bina semula. Berikan setiap peranti kunci sendiri supaya jika telefon hilang, anda hanya perlu memadam satu baris dalam authorized_keys. Jika anda lebih suka untuk tidak menjawab pada port awam sama sekali, letakkan pelayan di sebalik WireGuard dan biarkan sshd mendengar pada alamat tunnel.