كيف تستخدم Claude Code من هاتفك عبر VPS
شغّل Claude Code داخل tmux على VPS، واستخدم SSH ومفاتيح الدخول وmosh لاتصال ثابت من الهاتف، مع إصلاحات لوحة المفاتيح التي تحتاجها فعلاً.
Claude Code من هاتفك: كيف يعمل فعلياً
Claude Code من هاتفك ليس تطبيقاً للهواتف المحمولة. يعمل Claude Code على VPS (خادم افتراضي خاص)، داخل جلسة tmux تبقى مفتوحة، ويفتح هاتفك اتصال SSH (صدفة آمنة) بهذه الجلسة طوال فترة عرضها على الهاتف. إذا أغلقت التطبيق، يواصل الوكيل عمله لأن العملية لم تكن تعمل على الهاتف أصلاً.
هذا الفصل بين المكونات هو التصميم بأكمله. يعلّق نظام تشغيل الهاتف التطبيق بعد ثوانٍ من الانتقال إلى تطبيق آخر، لذلك تتوقف أي مهمة طويلة بدأت على الهاتف. كما يحصل الهاتف على عنوان شبكة جديد في كل مرة تنتقل فيها من Wi-Fi إلى بيانات الهاتف المحمول. تنتهي المشكلتان عند تشغيل العملية على خادم، بينما يقتصر دور الهاتف على عرض الشاشة.
تحتاج على الخادم إلى أربعة أشياء: tmux للاحتفاظ بالجلسة، ومفاتيح SSH لتسجيل الدخول، وmosh للتعامل مع تغيّرات الشبكة، وClaude Code نفسه. أما على الهاتف، فتحتاج إلى تطبيق طرفية واحد يحتوي على صف مفاتيح يمكنك الوصول إليه.
ما تحتاج إليه على VPS
يكفي خادم Ubuntu 24.04 صغير لأجزاء SSH وtmux. لكن Claude Code يحتاج إلى موارد أكبر. وفقاً للمتطلبات الرسمية في July 2026، يجب أن يعمل على Ubuntu 20.04 أو إصدار أحدث، وعلى معالج x64 أو ARM64، مع 4 GB من RAM أو أكثر. قد تنجح خطة 1 GB في تثبيته، ثم يفقد kernel العملية عند ارتفاع الحمل. يحتاج 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 في متصفح، ثم إعادة code إلى الطرفية. تنفيذ ذلك عبر التنقل بين تطبيقين على شاشة الهاتف بطيء. نفّذه مرة واحدة باستخدام لوحة مفاتيح فعلية، وستبقى بيانات الاعتماد على الخادم.
شغّل Claude Code داخل tmux حتى لا يؤدي انقطاع الاتصال إلى إيقافه
tmux new -s claude
cd ~/projects/api
claudeافصل الجلسة باستخدام Ctrl-b ثم d. يطبع tmux [detached (from session claude)] ويعيدك إلى الصدفة. يمكنك الآن إغلاق التطبيق أو فقدان الإشارة أو وضع الهاتف في جيبك. سيواصل الجزء تشغيله.
tmux ls
tmux attach -t claudeيطبع tmux 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
fiيُرفق new-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 التفاعلية.
يُضاف ~/.local/bin إلى PATH أيضاً في Ubuntu ضمن ~/.profile. إذا كان claude يعمل مباشرة بعد تسجيل الدخول، لكن ظهر command not found في غلاف داخل tmux، فهذا الترتيب هو السبب. لذلك ابدأ tmux من غلاف تسجيل دخول كما سبق، بدلاً من تشغيله من script يتجاوز profile.
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 لكل جهاز وكيفية إلغاء أحدها طريقة التسمية وخطوة الإلغاء، وهي أهم للهاتف منها للحاسوب المحمول.
فعّل قفل التطبيق الطرفي نفسه باستخدام القياسات الحيوية أو رمز المرور. من دونه، يصبح الهاتف غير المقفل shell مفتوحاً على خادمك طوال بقاء الشاشة قيد التشغيل.
Android: Termux
pkg upgrade
pkg install openssh mosh
ssh-keygen -t ed25519 -C "pixel"
cat ~/.ssh/id_ed25519.pubتوفّر Termux حزمتي 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 عندما يبقى في الخلفية، ولا يترتب على ذلك هنا سوى إعادة الاتصال. تبقى الجلسة والوكيل على الخادم.
لماذا تتجمّد الطرفية عند مغادرة شبكة 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 غير موجود، فهذا يعني أن الحزمة مفقودة على الخادم أو أنها غير موجودة في 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، بما في ذلك إعادة توجيه المنافذ، ولذلك فإن معاينة تطبيق ويب شغّله 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 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.
تعلّم أربعة مفاتيح، وستصبح بقية الاستخدام مريحة.
- يقاطع
EscClaude أثناء الاستجابة ويحتفظ بالعمل المنجز حتى تلك اللحظة، لذلك هو المفتاح الذي تريد أن يكون الأقرب إلى إبهامك. - يقاطع
Ctrl+Cالعملية الجارية أيضاً. عند ظهور موجه خامل، يؤدي الضغط الأول إلى مسح الإدخال، ويؤدي الضغط الثاني إلى الخروج من Claude Code، لذلك فهو الخيار الأكثر حدة. - يؤدي الضغط على
Escمرتين إلى مسح مسودة الموجه، أما عند وجود موجه فارغ فيفتح قائمة الاسترجاع بدلاً من ذلك. - لإدخال موجه متعدد الأسطر، اكتب
\ثم اضغط Enter. تعمل هذه الصيغة في كل طرفية. ولا يعمل Shift+Enter أصلياً إلا في قائمة قصيرة من طرفيات سطح المكتب، ولا تشمل هذه القائمة عملاء الأجهزة المحمولة.
تجنّب الأجزاء المقسّمة. يبلغ عرض الهاتف في الوضع العمودي نحو 40 عموداً، لذلك يترك التقسيم العمودي 20 عموداً لكل جزء، ويلتف كل diff بطريقة تحوّله إلى ضوضاء. استخدم نوافذ tmux بدلاً من ذلك: ينشئ Ctrl-b c نافذة، وينقلك Ctrl-b n إلى النافذة التالية. إذا انتهى الأمر بنافذة ثانية تحتوي على جلسة Claude Code مستقلة، يمكن للجلسةَين تسليم العمل بينهما مباشرة بدلاً من نسخ النص بين النوافذ على شاشة تعمل باللمس. أدر الهاتف إلى الوضع الأفقي عندما تحتاج إلى قراءة diff بوضوح.
من المفيد تحديد كمية النص التي تظهر على تلك الشاشة عن قصد، لأن نمط الإخراج يحرّر موجه النظام خلف كل رد، كما أن النمط الأكثر إيجازاً يعني شاشات أقل للتمرير عبرها على الهاتف.
تتعلق الجلسة الطويلة على شاشة صغيرة في معظمها بالسياق، لذلك يجدر بك قراءة إدارة نافذة سياق 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 sshيحلّل sshd -t ملف الإعداد ويطبع لا شيء عندما يكون صالحاً. إذا تجاوزته، فقد يتسبب خطأ مطبعي واحد في فشل sshd عند إعادة التحميل. أبقِ جلسة العمل الحالية مفتوحة، واختبر من اتصال ثانٍ قبل أن تغلق أي شيء، لأن المفتاح الخاطئ سيمنحك Permission denied (publickey). الآن، ومع تعطيل كلمات المرور لن يتوفر مسار بديل. ومسار الاسترداد في هذه الحالة هو وحدة التحكم التي يوفرها مزود الخدمة. إذا فشل اتصال الاختبار، فأعد الاتصال باستخدام ssh -v وأصلح المشكلة ما دامت الجلسة الأولى مفتوحة، لأن رسالة الخطأ الواحدة تلك تغطي خمسة أعطال منفصلة، ويُظهر الإخراج المطوّل أيّاً منها لديك.
امنح كل جهاز مفتاحاً خاصاً به. إذا فقدت الهاتف، فهذا يعني حذف سطر واحد من ~/.ssh/authorized_keys، بينما يظل حاسوبك المحمول يعمل. أما استخدام مفتاح مشترك فيعني تغيير المفتاح على كل جهاز تملكه.
إذا نقلت SSH إلى منفذ آخر على Ubuntu 24.04، فلاحظ أن المستمع يتبع ssh.socket، ولذلك لا يغيّر سطر Port وحده أي شيء. شغّل sudo systemctl edit ssh.socket، وأزل القيمة الافتراضية باستخدام ListenStream= فارغ، ثم عيّن منفذك في السطر التالي. يغطي تأمين SSH على VPS ذلك وبقية سطح الهجوم.
يضيف fail2ban لـSSH قدراً قليلاً من الأمان بعد تعطيل كلمات المرور، لأن كلمة المرور المُخمّنة لا يمكن قبولها إطلاقاً. لكنه يضيف سجلات أكثر هدوءاً، مما يجعل ملاحظة محاولة تسجيل دخول حقيقية أمراً سهلاً.
الخيار الأقوى هو إبقاء SSH خارج الإنترنت العام. ضع الخادم خلف شبكة WireGuard VPN تستضيفها بنفسك، وشغّل النفق على الهاتف عند الطلب، وامنح sshd عنوان ListenAddress على النفق فقط. يعمل mosh عبر النفق لأن الطرفين يستخدمان UDP. توجد ملاحظة واحدة: يضيف النفق حملاً إضافياً على الحزم، لذلك إذا توقفت عمليات النقل الكبيرة، فاخفض MTU (وحدة الإرسال القصوى) في إعداد WireGuard على الهاتف.
نقطة أخيرة بشأن العمل بهذه الطريقة. من الهاتف، توافق على مطالبات الأذونات في شاشة تعرض بضعة أسطر من diff في كل مرة. وهذا سبب للإبقاء على وسائل الحماية، لا لتعطيلها. تحقق أيضاً من وضع الأذونات الذي تبدأ به جلساتك، لأن الوضع التلقائي سيصبح الوضع الافتراضي لـClaude Code في 14 August 2026، وهو ينفذ تعديلات الملفات دون التوقف لطلب موافقتك. يوضح تشغيل Claude Code بأمان على VPS حدود المستخدم والمجلدات التي يجدر ضبطها قبل أن تصبح شاشتك اللمسية وسيلة الدخول الرئيسية.
عند إعادة الاتصال وظهور مشكلة
tmux attach تعني no server running on /tmp/tmux-1000/default أن خادم tmux لم يعد موجوداً، وهذا يعني في معظم الحالات أن الجهاز أعيد تشغيله. تحقّق باستخدام uptime. تؤدي تحديثات kernel عبر التحديثات الأمنية التلقائية إلى إعادة تشغيل الجهاز، ولا تحتوي الأجهزة التي أعيد تشغيلها على جلسة 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 فوق المطالبة على السبب.
تعني عودة نافذة بحجم صغير، مع وجود مساحة غير مستخدمة حولها، أن عميلين متصلان بأحجام مختلفة، لأن 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 ضمن هذه القائمة. كما أن الهاتف يضع تطبيقاته في وضع السكون ويغيّر عنوان الشبكة باستمرار، وهذا لا يناسب جلسة agent طويلة. شغّله على خادم واستخدم الهاتف لعرضه.
هل تستمر الجلسة إذا أغلقت التطبيق أو فقدت الإشارة؟
نعم، ويتولى ذلك مكوّنان منفصلان. يحافظ 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 يستمع على عنوان النفق.