איך להריץ את Claude Code מהטלפון הנייד
למדו להריץ את Claude Code על שרת VPS באמצעות tmux ו-mosh. המדריך מסביר איך לעקוף מגבלות סוללה ורשת בטלפון כדי לשמור על סשן עבודה יציב ורציף בכל מקום ובכל זמן.
Claude Code מהטלפון: איך זה עובד בפועל
Claude Code מהטלפון אינו אפליקציה לנייד. Claude Code רץ על שרת VPS (שרת וירטואלי פרטי), בתוך session של tmux שנשאר פתוח, והטלפון שלכם פותח חיבור SSH (מעטפת מאובטחת) לאותו session כל עוד אתם צופים בו. סגירת האפליקציה לא עוצרת את הסוכן, כיוון שהתהליך מעולם לא רץ על הטלפון עצמו.
ההפרדה הזו היא לב התכנון. מערכת הפעלה של טלפון משעה אפליקציה שניות לאחר שאתם עוברים ממנה, כך שכל משימה ארוכה שהתחילה בטלפון תיעצר. בנוסף, המכשיר מקבל כתובת רשת חדשה בכל פעם שאתם עוברים מ-wifi לנתונים סלולריים. שתי הבעיות הללו נפתרות כאשר התהליך רץ על שרת והטלפון רק מציג את המסך.
אתם זקוקים לארבעה רכיבים בשרת: tmux כדי להחזיק את ה-session, מפתחות SSH כדי להתחבר, mosh כדי להתמודד עם שינויי רשת, ו-Claude Code עצמו. בצד של הטלפון נדרשת אפליקציית טרמינל אחת עם שורת מקשים נגישה.
מה נדרש בשרת ה-VPS
שרת Ubuntu 24.04 קטן מספיק עבור השימוש ב-SSH וב-tmux. עם זאת, Claude Code דורש משאבים רבים יותר. הדרישות הרשמיות נכון ליולי 2026 הן מערכת הפעלה Ubuntu 20.04 ומעלה על מעבד x64 או ARM64, עם לפחות 4 GB של זיכרון RAM. בתוכנית של 1 GB ה-Claude Code יותקן, אך התהליך יופסק על ידי ה-kernel תחת עומס. כמו כן, Claude Code מחייב חשבון Claude בתשלום (Pro, Max, Team או Enterprise) או חשבון Console עם גישת API, שכן התוכנית החינמית של Claude.ai אינה כוללת זאת.
הגדירו את השרת עם משתמש רגיל בעל הרשאות sudo, ולא כ-root. אם השרת חדש, בצעו תחילה את עשר הדקות הראשונות ב-VPS חדש, כיוון ששינויי ה-SSH בהמשך מדריך זה יהיו פשוטים יותר לאחר שהמשתמש וה-firewall כבר קיימים.
sudo apt update && sudo apt install -y tmux mosh
curl -fsSL https://claude.ai/install.sh | bash
claude --versionמתקין התוכנה מציב את הקובץ הבינארי ב-~/.local/bin/claude, והפקודה claude --version מדפיסה שורה בסגנון 2.1.211 (Claude Code). אם מודפסת השורה command not found, סימן שהספרייה הזו עדיין לא מופיעה ב-PATH שלכם: התנתקו מהשרת, התחברו מחדש, ולאחר מכן בדקו שוב עם command -v claude. הפקודה claude doctor מדפיסה אבחון של ההתקנה וההגדרות מבלי להתחיל סשן.
התחברו פעם אחת כעת, ממחשב נייד, לפני שתסתמכו על הטלפון. הריצו את claude בתוך ספריית פרויקט ופעלו לפי הנחיות ההתחברות. התהליך מבקש מכם לפתוח כתובת URL בדפדפן ולהעתיק קוד חזרה לטרמינל; ביצוע פעולה זו תוך מעבר בין אפליקציות על מסך טלפון הוא איטי. בצעו זאת פעם אחת באמצעות מקלדת מלאה, ופרטי ההתחברות יישמרו על השרת.
הפעלת Claude Code בתוך tmux כדי למנוע את סגירתו בעקבות ניתוק
tmux new -s claude
cd ~/projects/api
claudeהתנתקו מהסשן באמצעות Ctrl-b ולאחר מכן d. tmux תדפיס [detached (from session claude)] ותחזיר אתכם ל-shell. כעת תוכלו לסגור את היישום, לאבד קליטה או להכניס את הטלפון לכיס. החלונית תמשיך לרוץ.
tmux ls
tmux attach -t claudetmux ls מדפיסה שורה אחת לכל סשן, למשל claude: 1 windows (created Thu Jul 30 09:14:02 2026). tmux attach -t claude תחזיר אתכם בדיוק לנקודה שבה עצרתם, כולל עריכה שלא הושלמה.
זה עובד מכיוון ש-tmux מריצה תהליך שרת משלה, וה-shell שלכם ו-Claude Code הם תהליכי-בן של אותו שרת ולא של sshd. כאשר חיבור ה-SSH מסתיים, ה-kernel שולח אות SIGHUP לתהליכים המחוברים לאותו חיבור, ושרת ה-tmux אינו נמנה עמם. ללא tmux, אותה נעילת מסך שמנתקת את החיבור שלכם תעצור את Claude Code באמצע קריאה לכלי. הרצת Claude Code על שרת VPS בתוך tmux מכסה את פריסת הסשן לעומק.
הריצו את tmux על השרת, לעולם לא על הטלפון. הקלדת tmux בתוך סשן שאתם כבר מחוברים אליו תדפיס sessions should be nested with care, unset $TMUX to force, וכפייה של הפעולה תגרום לשני מקשי prefix להתנגש זה בזה.
חיבור אוטומטי בכל התחברות
הקלדת פקודת החיבור במקלדת מגע הופכת למייגעת. הוסיפו את השורה הבאה לסוף הקובץ ~/.profile בשרת:
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 מתחברת לסשן בשם claude אם הוא קיים, ויוצרת אותו אם לא, כך שפקודה אחת מכסה את שני המקרים. הפקודה exec מחליפה את ה-shell של ההתחברות ב-tmux, כך שיציאה מ-tmux סוגרת את החיבור במקום להשאיר אתכם ב-prompt חשוף. כאשר אתם זקוקים ל-shell רגיל, דלגו על הקובץ: ssh you@server -t "bash --noprofile".
הכניסו זאת ל-~/.profile ולא ל-~/.bashrc. הקובץ ~/.bashrc רץ גם עבור סשנים לא אינטראקטיביים, ולכן העברות קבצים ייכשלו: scp ו-sftp יקראו את הפלט הבלתי צפוי כנתוני פרוטוקול וייכשלו עם Received message too long. הקובץ ~/.profile רץ עבור shell של התחברות בלבד, וזהו המצב בסשן SSH אינטראקטיבי.
הקובץ ~/.profile הוא גם המקום שבו Ubuntu מוסיפה את ~/.local/bin ל-PATH. אם claude עובד כראוי מיד לאחר ההתחברות אך shell בתוך tmux מציג command not found, סדר הפעולות הוא הסיבה לכך; לכן, הפעילו את tmux מתוך shell של התחברות כפי שהוסבר לעיל, במקום מתוך סקריפט שמדלג על ה-profile.
iOS: Termius או Blink Shell
שתי האפליקציות תומכות ב-SSH וב-mosh ושומרות מפתחות בתוך האפליקציה. ההבדל ביניהן הוא בממשק.
Blink Shell מבוססת על שורת פקודה. בשורת הפקודה שלה מקלידים ssh you@server או mosh you@server, באותו תחביר של מסוף שולחני. הגדרות נפתחות על ידי הקלדת config, ומקטע ה-Keys יוצר עבורך זוג מפתחות.
Termius מבוססת על טפסים. ממלאים פרטי מארח (host), ולאחר מכן משנים את הגדרת המארח מ-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.pubהחבילות OpenSSH ו-mosh זמינות במאגר של Termux, ולכן ssh, ssh-keygen ו-mosh פועלים בדיוק כפי שהם פועלים בסביבת שולחן עבודה. הוסיפו את שורת מפתח ה-public key שהודפסה לקובץ ~/.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, ושורת המקשים תופיע מעל המקלדת. אותה פעולת טעינה מחדש תחיל גם גופן TrueType ברוחב קבוע (monospace) שהונח בנתיב ~/.termux/font.ttf.
מערכת Android עלולה לעצור את Termux כאשר הוא פועל ברקע, אך במקרה זה המשמעות היא רק התחברות מחדש. הסשן וה-agent נשמרים בשרת.
מדוע הטרמינל קופא בעת ניתוק מה-Wi-Fi, ומה mosh פותר?
חיבור SSH הוא חיבור TCP (transmission control protocol), וחיבור TCP מזוהה על ידי שתי הכתובות ושני הפורטים. כאשר יוצאים מטווח ה-Wi-Fi, הטלפון מקבל כתובת חדשה מהרשת הסלולרית, ולכן החיבור הישן אינו תואם יותר לאף צד. שום גורם לא מדווח על כך. הטרמינל פשוט מפסיק להגיב עד ש-TCP מוותר, ואז ssh מדפיס client_loop: send disconnect: Broken pipe. כדי לסיים סשן קפוא באופן מיידי, הקישו Enter, לאחר מכן ~, ולבסוף ..
mosh (mobile shell) מסיר את מצב הכשל הזה. הוא משתמש ב-SSH פעם אחת כדי להתחבר ולהפעיל תהליך mosh-server, קורא בחזרה את פורט ה-UDP (user datagram protocol) שהשרת בחר, וסוגר את חיבור ה-SSH. לאחר מכן, שני הצדדים מחליפים חבילות UDP המאומתות באמצעות מפתח סשן משותף, כך שהסשן מזוהה לפי המפתח ולא לפי הכתובת שלכם. כתובת חדשה פשוט ממשיכה את העבודה. mosh גם מציג את ההקלדה שלכם באופן מקומי ומעדכן את התצוגה כאשר השרת מציג נתונים שונים, וזו הסיבה שהוא נשאר שמיש גם בחיבור סלולרי איטי.
mosh משתמש בפורט UDP בטווח שבין 60000 ל-61000, לכן פתחו טווח זה:
sudo ufw allow 60000:61000/udp
sudo ufw statusפתיחת פורטים באמצעות ufw מכיל את שאר התמונה בנוגע ל-firewall. אם ספק השירות שלכם מציע firewall רשתי נפרד בלוח הבקרה שלו, הוסיפו את אותו הטווח גם שם, כיוון שחוק ufw אינו יכול להשפיע על מסנן שנמצא לפני המכונה.
שני כשלים ב-mosh הם נפוצים. התחברות שמצליחה ואז נתקעת, תוך הצגת Nothing received from server on UDP port 60001., משמעותה שטווח ה-UDP חסום איפשהו בין הטלפון לשרת. חיבור שמדווח על mosh-server לא נמצא, משמעותו שהחבילה חסרה בשרת או שאינה מופיעה ב-PATH של ההתחברות. התקינו אותה, או הצביעו עליה ישירות באמצעות mosh --server=/usr/bin/mosh-server you@server.
mosh גם מסרב לפעול כאשר ה-locale של ההתחברות אינו UTF-8, ומציין זאת: mosh-server needs a UTF-8 native locale to run. תקנו את ה-locale בשרת, לא בטלפון.
locale
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8ישנם שני דברים ש-mosh אינו עושה. ה-README שלו מציין ש-mosh אינו תומך ב-X forwarding או בשימושים לא-אינטראקטיביים של SSH, כולל port forwarding, לכן תצוגה מקדימה של יישום אינטרנט ש-Claude Code הרגע הפעיל עדיין דורשת ssh -L 8080:127.0.0.1:8080 you@server רגיל. הוא גם מסנכרן רק את המסך הנראה לעין, לכן אין לו יכולת גלילה (scrollback) משלו. המגבלה השנייה אינה מהווה בעיה כאן, כיוון ש-tmux שומר על הגלילה: Ctrl-b ואז [ נכנסים למצב העתקה, גרירה או מקשי החצים מאפשרים גלילה, ו-q יוצאים ממנו.
הפיכת מסך הטלפון לשמיש
ארבע שורות ב-~/.tmux.conf בשרת מבצעות את רוב העבודה:
set -g mouse on
set -g status-position top
set -g default-terminal "tmux-256color"
set -g history-limit 20000mouse on הופך גרירת מגע לגלילה והקשה לבחירת חלונית או חלון, מה שמחליף את רוב מקשי ה-prefix שקשה להקליד. status-position top מזיז את שורת הסטטוס של tmux מהקצה התחתון, שם המקלדת שעל המסך וסרגל ההצעות שלה מסתירים אותה. default-terminal חשוב מכיוון שאחרת tmux מדווח על מסוף screen ל-Claude Code, מה שגורם לצבעים ולציור תיבות להיראות פחות טוב מהנדרש. אם tmux מסרב לעלות עם missing or unsuitable terminal: tmux-256color, רשומת ה-terminfo חסרה: sudo apt install ncurses-term.
למדו ארבעה מקשים והשאר יהיה נוח.
Escקוטע את Claude באמצע התגובה ושומר על העבודה שכבר בוצעה, לכן זהו המקש שתרצו שיהיה הקרוב ביותר לאגודל שלכם.Ctrl+Cקוטע גם פעולה שרצה כרגע. בהנחיה (prompt) במצב המתנה, לחיצה ראשונה מנקה את הקלט ולחיצה שנייה יוצאת מ-Claude Code, לכן זהו כלי בוטה יותר.Escפעמיים מנקה טיוטת הנחיה, ובהנחיה ריקה הוא פותח את תפריט ה-rewind במקום זאת.- עבור הנחיה מרובת שורות, הקלידו
\ולאחר מכן Enter. צורה זו עובדת בכל מסוף. Shift+Enter הוא טבעי רק ברשימה קצרה של מסופי שולחן עבודה, ולקוחות מובייל אינם נכללים בה.
הימנעו מפיצול חלוניות. טלפון במצב לאורך הוא ברוחב של כ-40 עמודות, כך שפיצול אנכי משאיר 20 עמודות לכל חלונית וכל diff הופך לרעש ויזואלי. השתמשו בחלונות tmux במקום: Ctrl-b c יוצר חלון ו-Ctrl-b n עובר לבא בתור. אם חלון שני מחזיק סשן Claude Code משלו, שני הסשנים יכולים להעביר עבודה זה לזה ישירות במקום שתעתיקו טקסט בין חלונות על מסך מגע. סובבו את הטלפון לרוחב כאשר אתם צריכים לקרוא diff בצורה תקינה.
כדאי להגדיר במכוון כמה טקסט יוצג במסך, משום ש־סגנון פלט עורך את הנחיית המערכת שמאחורי כל תשובה, וסגנון תמציתי יותר מצריך פחות מסכי גלילה בטלפון.
סשן ארוך על מסך קטן הוא בעיקר בעיה של הקשר (context), לכן ניהול חלון ההקשר של Claude Code הוא נושא שכדאי לקרוא לפני שמנסים להריץ יום עבודה מלא מהרכבת.
אבטחת הגישה: שימוש במפתחות בלבד, ללא סיסמאות
הטלפון מחזיק כעת מפתח למכונה שבה אתם עורכים קוד ומריצים פקודות. יש לבטל את אימות הסיסמאות. שימוש בקובץ drop-in בטוח יותר מעריכה ישירה של sshd_config, כיוון ש-sshd_config ב-Ubuntu כולל את /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 sshsshd -t מנתח את התצורה ולא מדפיס דבר כאשר היא תקינה. אם תדלגו על שלב זה, שגיאת הקלדה אחת תגרום ל-sshd להיכשל בטעינה מחדש. השאירו את הסשן הנוכחי פתוח ובצעו בדיקה מחיבור שני לפני שאתם סוגרים משהו, כיוון שמפתח שגוי יגרום ל-Permission denied (publickey)., ובהיעדר סיסמאות, לא תהיה לכם דרך חזרה. במצב כזה, נתיב השחזור היחיד הוא ה-console של ספק השרתים שלכם.
הקצו לכל מכשיר מפתח משלו. אובדן הטלפון משמעו מחיקת שורה אחת מ-~/.ssh/authorized_keys, בעוד המחשב הנייד ימשיך לעבוד. מפתח משותף מחייב החלפת מפתח בכל המכשירים שבבעלותכם.
אם אתם מעבירים את SSH לפורט אחר ב-Ubuntu 24.04, שימו לב שהמאזין שייך ל-ssh.socket, לכן שורת Port לבדה לא תשנה דבר. הריצו את sudo systemctl edit ssh.socket, נקו את ברירת המחדל עם ListenStream= ריק, ולאחר מכן הגדירו את הפורט שלכם בשורה הבאה. המדריך הקשחת SSH ב-VPS מכסה זאת ואת שאר שטח התקיפה.
fail2ban עבור SSH מוסיף מעט אבטחה ברגע שסיסמאות מבוטלות, כיוון שלא ניתן לקבל סיסמה מנוחשת בשום מקרה. מה שהוא כן מוסיף זה לוגים נקיים, מה שמקל על זיהוי ניסיונות התחברות אמיתיים.
האופציה החזקה יותר היא להשאיר את SSH מחוץ לאינטרנט הציבורי. הציבו את השרת מאחורי רשת WireGuard VPN בניהול עצמי, העלו את ה-tunnel בטלפון לפי דרישה, והגדירו ל-sshd את ListenAddress על ה-tunnel בלבד. mosh עובד מעל ה-tunnel כיוון ששני הצדדים משתמשים ב-UDP. הסתייגות אחת: ה-tunnel מוסיף overhead לחבילות, לכן אם העברות גדולות נתקעות, הנמיכו את ה-MTU (יחידת שידור מקסימלית) בתצורת ה-WireGuard בטלפון.
נקודה אחרונה לגבי עבודה בדרך זו. מהטלפון אתם מאשרים בקשות הרשאה על מסך שמציג רק כמה שורות של diff בכל פעם. זו סיבה לשמור על אמצעי ההגנה במקום לכבות אותם. המדריך הרצת Claude Code בצורה בטוחה ב-VPS מכסה את מגבלות המשתמש והתיקיות שכדאי להגדיר לפני שהדרך העיקרית שלכם פנימה הופכת למסך מגע.
When you reattach and something is wrong
tmux attach printing no server running on /tmp/tmux-1000/default means the tmux server is gone, which nearly always means the machine rebooted. Check with uptime. Kernel updates from automatic security updates reboot the box, and a rebooted box has no tmux session, so treat any Claude Code run as something you can restart.
can't find session: claude is different. The tmux server is running but that name is not there. tmux ls shows what does exist.
If you attach and find a plain shell prompt where Claude Code used to be, the process ended without the session ending. Look at dmesg -T | tail for a line like Out of memory: Killed process 4821 (claude), which is what a box below the 4 GB requirement does during a large edit. No such line means Claude Code exited on its own, and the shell's scrollback above the prompt holds the reason.
A window that comes back tiny, with unused space around it, means two clients are attached at different sizes, because tmux sizes a window to fit the smallest attached client. Your laptop is still holding the session at 200 columns wide while the phone asks for 40. Detach the others as you attach: tmux attach -d -t claude.
FAQ
האם ניתן להריץ את Claude Code ישירות על הטלפון במקום על VPS?
לא. הפלטפורמות הנתמכות נכון ליולי 2026 הן 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, ופתחו אותו שוב ב-firewall של ספק התשתית שלכם, המהווה הגדרה נפרדת ברוב לוחות הבקרה. אם mosh מדווח ש-mosh-server לא נמצא, סימן שהחבילה חסרה בשרת: sudo apt install mosh.
כיצד ניתן לעצור את Claude Code ממקלדת ללא מקש Esc?
הוסיפו שורת מקשים. Termux מאפשר להגדיר זאת באמצעות extra-keys בתוך ~/.termux/termux.properties, וגם Termius ו-Blink כוללות שורת מקשים הניתנת לעריכה בהגדרות. Esc עוצר תגובה רצה ושומר את העבודה שבוצעה עד כה. גם Ctrl+C עוצר את הפעולה, אך לחיצה כפולה עליו כשהמערכת בהמתנה תגרום ליציאה מ-Claude Code, לכן העדיפו להשתמש ב-Esc תחילה.
האם פתיחת SSH לאינטרנט בטוחה מספיק למטרה זו?
כאשר אימות באמצעות סיסמה כבוי, האישור היחיד שיכול להצליח הוא מפתח שאינו עוזב את המכשירים שלכם, וזהו סיכון סביר עבור מכונה שניתן להקים מחדש. העניקו לכל מכשיר מפתח משלו, כך שאובדן טלפון יעלה לכם רק במחיקת שורה אחת ב-authorized_keys. אם אתם מעדיפים לא להאזין בפורט ציבורי כלל, הציבו את השרת מאחורי WireGuard ואפשרו ל-sshd להאזין בכתובת ה-tunnel בלבד.