איך להפעיל את Claude Code מהטלפון
Claude Code פועל ב-tmux על VPS והטלפון משמש רק חלון. כך מגדירים מפתחות SSH, משתמשים ב-mosh ברשת סלולרית לא יציבה ומתחברים מחדש עם tmux attach.
Claude Code מהטלפון: איך זה פועל בפועל
Claude Code מהטלפון אינו אפליקציה לנייד. Claude Code פועל על VPS (שרת פרטי וירטואלי), בתוך סשן tmux שנשאר פתוח, והטלפון פותח חיבור SSH (מעטפת מאובטחת) לסשן הזה כל עוד אתם מביטים בו. אם תסגרו את האפליקציה, הסוכן ימשיך לפעול, משום שהתהליך מעולם לא פעל בטלפון.
ההפרדה הזו היא עיקר התכנון. מערכת הפעלה של טלפון משעה אפליקציה כמה שניות לאחר שעוברים ממנה, ולכן כל משימה ממושכת שהופעלה בטלפון נעצרת. בנוסף, הטלפון מקבל כתובת רשת חדשה בכל פעם שעוברים מ־Wi-Fi לנתונים סלולריים. שתי הבעיות נפתרות כאשר התהליך פועל בשרת, והטלפון רק מציג את המסך.
בשרת נדרשים ארבעה דברים: tmux לשמירת הסשן, מפתחות 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 דורש גם חשבון Claude בתשלום (Pro, Max, Team או Enterprise), או חשבון Console עם גישה ל-API, משום שתוכנית Claude.ai החינמית אינה כוללת אותו.
הגדירו את השרת עבור משתמש רגיל עם sudo, ולא עבור root. אם השרת חדש, עברו תחילה על עשר הדקות הראשונות ב-VPS חדש, משום שקל יותר לבצע את שינויי ה-SSH שבהמשך המדריך לאחר שהמשתמש וחומת האש מוגדרים.
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)] ויחזיר אתכם למעטפת. כעת תוכלו לסגור את היישום, לאבד קליטה או להכניס את הטלפון לכיס. החלונית תמשיך לפעול.
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, לתהליכים המחוברים לחיבור זה, ושרת tmux אינו נמנה עמם. ללא tmux, נעילת המסך שמנתקת את החיבור תפסיק את Claude Code באמצע קריאה לכלי. הפעלת Claude Code ב-VPS בתוך tmux מסבירה את מבנה ההפעלה בפירוט רב יותר.
הפעילו את 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
finew-session -A -s claude מצמידה אתכם למופע בשם claude אם הוא קיים, ויוצרת אותו אם אינו קיים, כך שפקודה אחת מטפלת בשני המצבים. exec מחליפה את מעטפת ההתחברות ב- tmux, ולכן יציאה מ- tmux סוגרת את החיבור במקום להחזיר אתכם לשורת פקודה ריקה. כאשר נדרשת מעטפת רגילה, דלגו על הקובץ: ssh you@server -t "bash --noprofile".
הוסיפו זאת ל- ~/.profile ולא ל- ~/.bashrc. ~/.bashrc מופעלת גם עבור הפעלות שאינן אינטראקטיביות, ולכן העברות קבצים נכשלות: scp ו- sftp מפרשות את הפלט הבלתי צפוי כנתוני פרוטוקול ונכשלות עם Received message too long. ~/.profile מופעלת רק עבור מעטפות התחברות, וזהו המצב של הפעלת SSH אינטראקטיבית.
~/.profile הוא גם המקום שבו Ubuntu מוסיפה את ~/.local/bin ל- PATH. אם claude פועלת מיד לאחר ההתחברות, אך מעטפת בתוך tmux מציגה command not found, סדר הפעולות הזה הוא הסיבה. לכן הפעילו את 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, והשורה תופיע מעל למקלדת. אותה טעינה מחדש תטען גם גופן TrueType ברוחב קבוע שהונח ב-~/.termux/font.ttf.
Android עלול לעצור את Termux כאשר הוא פועל ברקע, ובמקרה זה הדבר אינו גורם לאובדן נתונים — נדרש רק להתחבר מחדש. ה-session וה-agent פועלים בשרת.
מדוע הטרמינל קופא כשאני יוצא מטווח ה-Wi-Fi, ומה mosh מתקן?
חיבור SSH הוא חיבור TCP (פרוטוקול בקרת תעבורה), וחיבור TCP מזוהה באמצעות שתי הכתובות ושתי היציאות. כאשר יוצאים מטווח ה-Wi-Fi, הטלפון מקבל כתובת חדשה מהרשת הסלולרית, ולכן החיבור הישן אינו תואם עוד לאף צד. שום גורם אינו מודיע על כך. הטרמינל פשוט מפסיק להגיב עד ש-TCP מוותר, ואז ssh מדפיס client_loop: send disconnect: Broken pipe. כדי לסיים מיד הפעלה שקפאה, הקש Enter, לאחר מכן ~, ולאחר מכן ..
mosh (מעטפת ניידת) מבטל את מצב הכשל הזה. הוא משתמש ב-SSH פעם אחת כדי להתחבר ולהפעיל תהליך mosh-server, קורא את יציאת ה-UDP (פרוטוקול נתוני משתמש) שהשרת בחר, וסוגר את חיבור ה-SSH. לאחר מכן שני הצדדים מחליפים מנות UDP המאומתות באמצעות מפתח הפעלה משותף, ולכן ההפעלה מזוהה לפי המפתח הזה ולא לפי הכתובת שלך. כתובת חדשה פשוט ממשיכה את ההפעלה. mosh גם מציג באופן מקומי את ההקלדה שלך ומרענן את התצוגה כאשר השרת מציג מצב שונה, ולכן הוא נשאר שמיש גם בקישור סלולרי איטי.
mosh משתמש ביציאת UDP בטווח שבין 60000 ל-61000, לכן יש לפתוח את הטווח הזה:
sudo ufw allow 60000:61000/udp
sudo ufw statusפתיחת יציאות באמצעות ufw מציג את שאר תמונת חומת האש. אם הספק שלך מציע חומת אש נפרדת של הרשת בלוח הבקרה שלו, הוסף גם שם את אותו טווח, משום שכלל ufw אינו יכול להשפיע על מסנן שמוצב לפני המכונה.
שתי תקלות ב-mosh נפוצות. התחברות שמצליחה ולאחר מכן נתקעת ומציגה Nothing received from server on UDP port 60001. פירושה שטווח ה-UDP חסום במקום כלשהו בין הטלפון לשרת. חיבור שמדווח על mosh-server not found פירושו שהחבילה חסרה בשרת או שאינה נמצאת ב-PATH של ההתחברות. התקן אותה, או הפנה אליה ישירות באמצעות mosh --server=/usr/bin/mosh-server you@server.
mosh גם מסרב לפעול כאשר אזור השפה של ההתחברות אינו 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יש שני דברים ש-mosh אינו עושה. README שלו מציין ש-mosh אינו תומך בהעברת X או בשימושים לא-אינטראקטיביים של SSH, לרבות העברת יציאות, ולכן תצוגה מקדימה של יישום Web ש-Claude Code הפעיל זה עתה עדיין דורשת ssh -L 8080:127.0.0.1:8080 you@server רגיל. בנוסף, הוא מסנכרן רק את המסך הנראה, ולכן אין לו היסטוריית גלילה משלו. מגבלה זו אינה גורעת דבר במקרה הזה, משום ש-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 הופך גרירת מגע לגלילה והקשה לבחירת חלונית או חלון. כך הוא מחליף את רוב מקשי הקידומת שקשה להקליד. status-position top מעביר את שורת המצב של tmux מהקצה התחתון, שבו המקלדת שעל המסך וסרגל ההצעות שלה מסתירים אותה. default-terminal חשוב מכיוון שאחרת tmux מצהיר בפני Claude Code שהוא משתמש במסוף screen, ולכן הצבעים ושרטוט התיבות מוצגים באיכות נמוכה מהנדרש. אם tmux מסרב לאחר מכן להתחיל עם missing or unsuitable terminal: tmux-256color, ערך terminfo חסר: sudo apt install ncurses-term.
למדו ארבעה מקשים, והשימוש בשאר האפשרויות יהיה נוח.
Escמפסיק את Claude באמצע התשובה ומשאיר את העבודה שכבר בוצעה. לכן זהו המקש שכדאי למקם קרוב לאגודל.Ctrl+Cמפסיק גם פעולה שפועלת כעת. בשורת פקודה ריקה, הלחיצה הראשונה מנקה את הקלט והלחיצה השנייה יוצאת מ-Claude Code. לכן זהו כלי פחות ממוקד.Escפעמיים מנקה טיוטת פקודה. בשורת פקודה ריקה הוא פותח במקום זאת את תפריט החזרה לאחור.- עבור פקודה המשתרעת על כמה שורות, הקלידו
\ולאחר מכן Enter. צורה זו פועלת בכל מסוף. Shift+Enter הוא מנגנון מובנה רק ברשימה קצרה של מסופי שולחן עבודה, והלקוחות למכשירים ניידים אינם כלולים בה.
הימנעו מחלוניות מפוצלות. טלפון במצב לאורך הוא ברוחב של כ-40 עמודות, ולכן פיצול אנכי משאיר 20 עמודות בכל חלונית, וכל הפרש נשבר לשורות והופך לרעש. השתמשו במקום זאת בחלונות של tmux: Ctrl-b c יוצר חלון, ו-Ctrl-b n עובר לחלון הבא. סובבו את הטלפון למצב לרוחב כאשר עליכם לקרוא הפרש כראוי.
עבודה ממושכת במסך קטן היא בעיקר בעיית הקשר, ולכן כדאי לקרוא את ניהול חלון ההקשר של Claude Code לפני שמנסים לבצע יום עבודה מלא מתוך רכבת.
הקשח אותו: מפתחות בלבד, ללא סיסמאות
הטלפון מחזיק כעת מפתח למכונה שמעריכה את הקוד שלך ומריצה פקודות. כבה את אימות הסיסמה. קובץ נפרד שמופעל אוטומטית בטוח יותר מעריכה ישירה של 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)., וכאשר הסיסמאות מושבתות אין אפשרות חלופית. בשלב זה, נתיב השחזור הוא המסוף של ספק השירות שלך.
הקצה לכל מכשיר מפתח משלו. אם הטלפון יאבד, יהיה צורך למחוק שורה אחת בלבד מ-~/.ssh/authorized_keys, והמחשב הנייד ימשיך לפעול. מפתח משותף אחד מחייב החלפת המפתח בכל מכשיר שבבעלותך.
אם תעביר את SSH ליציאה אחרת ב-Ubuntu 24.04, שים לב שהמאזין שייך ל-ssh.socket, ולכן שורת Port לבדה אינה משנה דבר. הרץ את sudo systemctl edit ssh.socket, נקה את ברירת המחדל באמצעות ListenStream= ריק, ולאחר מכן הגדר את היציאה שלך בשורה הבאה. הקשחת SSH ב-VPS מכסה זאת ואת שאר שטח החשיפה.
fail2ban עבור SSH מוסיף מעט אבטחה לאחר שהסיסמאות מושבתות, מכיוון שלא ניתן לקבל סיסמה שנוחשה כלל. עם זאת, הוא מוסיף יומנים שקטים יותר, וכך ניסיון התחברות אמיתי קל לזיהוי.
האפשרות החזקה יותר היא להשאיר את SSH מחוץ לאינטרנט הציבורי. הצב את השרת מאחורי רשת VPN מסוג WireGuard שאתה מארח בעצמך, הפעל את המנהרה בטלפון לפי דרישה, והגדר ל-sshd להאזין באמצעות ListenAddress רק במנהרה. mosh פועל דרך המנהרה מכיוון ששני הצדדים משתמשים ב-UDP. יש הסתייגות אחת: המנהרה מוסיפה תקורה למנות, ולכן אם העברות גדולות נעצרות, הנמך את ה-MTU (יחידת השידור המרבית) בתצורת WireGuard שבטלפון.
נקודה אחרונה לגבי עבודה בדרך זו. בטלפון אתה מאשר בקשות הרשאה במסך שמציג בכל פעם כמה שורות בלבד מההבדלים. זו סיבה להשאיר את אמצעי הבקרה, ולא לכבות אותם. הרצת Claude Code באופן בטוח ב-VPS מכסה את מגבלות המשתמש והתיקיות שכדאי להגדיר לפני שדרך הגישה העיקרית שלך תהיה מסך מגע.
כשמתחברים מחדש ומשהו אינו תקין
הצגת tmux attach ו-no server running on /tmp/tmux-1000/default פירושה ששרת tmux אינו קיים. כמעט תמיד הסיבה היא שהמחשב הופעל מחדש. בדקו באמצעות uptime. עדכוני ליבה מ-עדכוני אבטחה אוטומטיים מפעילים מחדש את המחשב. לאחר הפעלה מחדש אין הפעלת tmux, לכן יש להתייחס לכל הפעלה של Claude Code כאל תהליך שאפשר להפעיל מחדש.
can't find session: claude שונה. שרת tmux פועל, אך השם הזה אינו קיים בו. tmux ls מציג את ההפעלות הקיימות.
אם התחברתם ומצאתם שורת פקודה רגילה של מעטפת במקום שבו פעל Claude Code, התהליך הסתיים בלי שההפעלה הסתיימה. בדקו את dmesg -T | tail וחפשו שורה כגון Out of memory: Killed process 4821 (claude). שורה זו מופיעה כאשר מחשב אינו עומד בדרישת הזיכרון של 4 GB במהלך עריכה גדולה. אם שורה כזו אינה קיימת, Claude Code הסתיים בעצמו, והסיבה נמצאת בהיסטוריית הגלילה של המעטפת שמעל לשורת הפקודה.
חלון שחוזר בגודל קטן, עם שטח פנוי סביבו, מצביע על כך ששני לקוחות מחוברים בגדלים שונים. tmux מתאים את גודל החלון ללקוח המחובר הקטן ביותר. המחשב הנייד עדיין מחזיק את ההפעלה ברוחב של 200 עמודות, בעוד שהטלפון מבקש רוחב של 40 עמודות. נתקו את הלקוחות האחרים בעת ההתחברות: tmux attach -d -t claude.
FAQ
האם ניתן להפעיל את Claude Code בטלפון עצמו במקום ב-VPS?
לא. הפלטפורמות הנתמכות נכון ל-July 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, והוסיפו אותו שוב בחומת האש של הרשת אצל ספק האירוח, שהיא בקרת גישה נפרדת ברוב לוחות הבקרה. אם 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 להאזין בכתובת המנהרה.