تشغيل الوكلاء على خادم سحابي

شغّل Claude Code أو Codex على خادم سحابي: ثبّت الأدوات، واضبط المفتاح ونقطة النهاية، وأبقِ المهام حيّة باستخدام tmux، وانتقل إلى SSH المعتمد على المفتاح بأمان.

آخر تحديث 2026-11-13

تحتاج مفتاح API؟ أنشئ حسابًا ←نقاط النهاية وعناوين Base URL ←

في هذه الصفحة

آخر تحقق: 2026-10-20 · 📄 وفقًا لـ qcode.cc والوثائق الرسمية (tmux / OpenSSH / Ubuntu Server)

ℹ️ تتوفر صفحة الإعدادات ولوحة التحكم الخاصة بالخوادم السحابية حاليًا باللغة الصينية والإنجليزية فقط. صفحة المنتج: https://qcode.cc/en/cloud

تشغيل Claude Code أو Codex على جهاز يبقى قيد التشغيل: مهمة تستغرق نصف ساعة أو عدة ساعات يجب ألا تتوقف عند انقطاع اتصال SSH، ويجب أن تكون قادرًا على العودة والاطلاع عليها. فهذا هو الغرض من الخادم السحابي. ثبّت الأدوات، واضبط المفتاح، وبعد ذلك يهمّ أمران: إبقاء المهمة على قيد الحياة عند انقطاع جلسة SSH، والانتقال إلى تسجيل الدخول القائم على المفتاح.

لمعرفة كيفية شراء الجهاز راجع الخوادم السحابية: الاختيار والشراء والاستخدام؛ وللفوترة والاسترداد راجع فوترة الخادم السحابي وقواعده.

تثبيت Claude Code / Codex على الخادم

تعرض صفحة الخادم السحابي هذين الأمرين تحديدًا؛ نفّذهما على الخادم:

curl -fsSL https://qcode.cc/install/claude-code.sh | bash -s -- --lang en
curl -fsSL https://qcode.cc/install/codex.sh | bash -s -- --lang en

رسائل السكربت بالإنجليزية (--lang يقبل zh وen فقط).

يقيس السكربت أداء نطاقات الوصول، ويطلب مفتاح cr_ الخاص بك، ويكتب الإعدادات، ويثبّت Node.js وCLI عند الحاجة، وينتهي بإرسال طلب بسيط للتحقق من الاتصال. جميع الخيارات وخطوات التراجع موجودة في سكربت الإعداد بنقرة واحدة.

ضبط مفتاح QCode ونقطة النهاية

كتب سكربت النقرة الواحدة الإعدادات لك بالفعل. إذا أردت كتابتها يدويًا — أو أردت فقط التحقق مما كتبه — فهذان هما الموضعان اللذان يجب النظر إليهما، منقولين من متغيرات البيئة والبدء السريع مع Codex:

Claude Code (بروتوكول Anthropic):

export ANTHROPIC_BASE_URL="https://api.qcode.cc/api"
export ANTHROPIC_AUTH_TOKEN="cr_your_key"

Codex (بروتوكول OpenAI Responses) — أنشئ الدليل أولًا، ثم اكتب ~/.codex/config.toml:

mkdir -p ~/.codex
model_provider = "qcode"
model = "gpt-6.1-sol"
model_reasoning_effort = "high"

[model_providers.qcode]
name = "qcode"
base_url = "https://api.qcode.cc/openai"
wire_api = "responses"
requires_openai_auth = true

~/.codex/auth.json:

{
  "OPENAI_API_KEY": "cr_your_key"
}

بعد ذلك، تحقق من أن base_url هو https://api.qcode.cc/openai، وأن ANTHROPIC_BASE_URL هو https://api.qcode.cc/api، وأن المفتاح يبدأ بـ cr_. لا يؤثر export المكتوب يدويًا إلا في الصدفة الحالية؛ لكي تلتقط جلسة tmux قيد التشغيل بالفعل هذا التغيير، نفّذه داخل جلسة tmux أو ضعه في ~/.bashrc.

إبقاء المهام قيد التشغيل بعد انقطاع SSH باستخدام tmux

إذا شغّلت المهمة عبر ssh root@<IP> عادي، فإن العملية في المقدمة تموت مع الاتصال. جلسات tmux دائمة — يقول الدليل:

كل جلسة دائمة وستبقى على قيد الحياة بعد انقطاع غير متعمد (مثل انتهاء مهلة اتصال ssh(1)) أو فصل متعمد (بضغطات المفاتيح «C-b d»).

بعبارة أخرى: تبقى الجلسة سواء انقطع SSH بشكل غير متوقع أو فصلت نفسك باستخدام C-b d.

ثلاثة أوامر ستستخدمها طوال الوقت (إذا لم يكن tmux مثبتًا بعد، فثبّته أولًا باستخدام مدير الحزم في نظامك؛ على Ubuntu يكون الأمر sudo apt install tmux):

tmux new -s agent      # create a session named agent and enter it
tmux ls                # list every session on the server
tmux attach -t agent   # attach to that session again

للابتعاد، اضغط Ctrl-b ثم d للفصل — تستخدم ارتباطات المفاتيح الافتراضية في الدليل البادئة C-b، ويعني d «فصل العميل الحالي.» (فصل العميل الحالي). تبقى المهمة قيد التشغيل في الجلسة؛ وعندما تعود، يعيدك tmux attach إلى الداخل. وطريقة الدليل نفسها لإعادة الارتباط هي $ tmux attach.

أمان SSH: التبديل إلى تسجيل الدخول بالمفتاح، والتحقق من نجاحه، ثم تعطيل كلمات المرور

عند الطلب، يمكنك أيضًا إضافة مفتاح SSH عام مباشرة واختياريًا تحديد «تسجيل الدخول بالمفتاح فقط (تعطيل تسجيل الدخول بكلمة مرور root)». الخطوات أدناه هي الطريقة اليدوية للتبديل إلى تسجيل الدخول بالمفتاح.

الترتيب مهم. تحذّر وثائق Ubuntu من هذا تحديدًا عند تغيير إعدادات OpenSSH: إذا كان SSH هو طريقك الوحيد للدخول وأخطأت في الإعدادات، فإن إعادة التشغيل قد تمنعك من الدخول إلى خادمك. لذا تحقّق أولًا، ثم عطّل بعد ذلك.

تستخدم الأوامر أدناه Ubuntu كمثال. تستخدم التوزيعات الأخرى أسماء خدمات ومسارات إعدادات مختلفة — راجع وثائق ذلك النظام نفسه؛ ويبقى الترتيب كما هو (تحقق من المفتاح، ثم عطّل كلمات المرور، وافحص قبل إعادة التشغيل).

  1. ولّد زوج المفاتيح على جهازك (وثائق Ubuntu Server، نصًا حرفيًا):

bash ssh-keygen -t ed25519

  1. ضع المفتاح العام على الخادم (نفّذ هذا على macOS / Linux، أو في WSL على Windows؛ يُنفّذ أمر chmod على الخادم، في مجلدك الرئيسي بعد تسجيل الدخول):

bash ssh-copy-id root@<IP>

تقول صفحة Ubuntu إنه يجب إلحاق محتوى id_ed25519.pub بـ ~/.ssh/authorized_keys على الجهاز الهدف، والتحقق مرة أخرى من أذونات ذلك الملف — لا يجوز أن يملك إذن الكتابة إلا المستخدم الموثّق؛ وإذا لم تكن صحيحة، فنفّذ chmod go-w .ssh/authorized_keys.

  1. تحقق من أن المفتاح يتيح لك الدخول. تعبّر الصفحة عن ذلك هكذا: «ينبغي أن تكون الآن قادرًا على الاتصال بـ target_machine عبر SSH دون أن يُطلب منك إدخال كلمة مرور.» (في صفحة Ubuntu، يشير target_machine إلى عنوان خادمك؛ وتعني الجملة أنك تستطيع تسجيل الدخول دون أن يُطلب منك إدخال كلمة مرور). يجب ألا يُسمح لهذه الخطوة بالتراجع إلى كلمة مرور، وإلا فسيتمكن مفتاح لم يُثبَّت بشكل صحيح من الدخول رغم ذلك:

bash ssh -o PasswordAuthentication=no -o PreferredAuthentications=publickey -i ~/.ssh/id_ed25519 root@<IP>

مع -o PasswordAuthentication=no يفشل المفتاح الخاطئ فورًا مع Permission denied بدلًا من طلب كلمة مرور؛ وإذا رُفض دخولك، فلا تُكمل — عُد إلى الخطوة 2. في هذه المرحلة لا تُغلق الجلسة التي ما زلت مسجلًا الدخول إليها بكلمة المرور؛ افتح نافذة طرفية ثانية.

  1. بعد نجاح ذلك فقط، عطّل تسجيل الدخول بكلمة المرور. اكتشف أولًا الملفات التي تتحكم في الخيار — على Ubuntu يبدأ /etc/ssh/sshd_config بـ Include /etc/ssh/sshd_config.d/*.conf، وتتجاوز الإعدادات الموجودة في sshd_config.d/ الملف الرئيسي:

bash sudo grep -rEi '^\s*PasswordAuthentication' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/

غيّر كل سطر مطابق إلى PasswordAuthentication no (بما في ذلك yes في ملف ضمن sshd_config.d/). فقط إذا لم يطابق أي شيء على الإطلاق فأضف السطر PasswordAuthentication no إلى نهاية /etc/ssh/sshd_config. السبب موجود في sshd_config(5): «ما لم يُذكر خلاف ذلك، فسيُستخدم أول قيمة يتم الحصول عليها لكل كلمة مفتاحية.» (ما لم يُذكر خلاف ذلك، تأخذ كل كلمة مفتاحية أول قيمة تُقرأ)؛ تُعالَج الملفات التي يجلبها Include بترتيب معجمي، لذا تفوز القيمة الأسبق. يصف الدليل الخيارين هكذا: PasswordAuthentication — «يحدد ما إذا كان يُسمح بالمصادقة بكلمة المرور.» (ما إذا كان يُسمح بالمصادقة بكلمة المرور)؛ PubkeyAuthentication — «يحدد ما إذا كان يُسمح بالمصادقة بالمفتاح العام.» (ما إذا كان يُسمح بالمصادقة بالمفتاح العام).

  1. افحص الصياغة، وانظر إلى القيم السارية، ثم أعد التشغيل:

bash sudo sshd -t sudo sshd -T | grep -Ei '^(passwordauthentication|pubkeyauthentication) '

يطبع sshd -T الإعدادات التي سيستخدمها sshd فعليًا (وضع الاختبار الموسّع في sshd(8): تُكتب الإعدادات إلى الإخراج القياسي). لا تنتقل إلى إعادة التشغيل إلا إذا رأيت passwordauthentication no وpubkeyauthentication yes؛ وإذا كان passwordauthentication لا يزال yes، فإن ملفًا آخر يتجاوزه — عُد إلى الخطوة السابقة. إذا أبلغ sshd -t عن خطأ، فلا تُعد التشغيل بعد.

bash sudo systemctl restart ssh.service

  1. تحقق مرة أخرى بعد إعادة التشغيل، وأبقِ الجلسة القديمة مفتوحة. افتح طرفية جديدة وسجّل الدخول بالمفتاح مرة أخرى، باستخدام الأمر نفسه كما في الخطوة 3؛ ثم جرّب تسجيل دخول بكلمة مرور فقط، ويجب أن يُرفض:

bash ssh -o PubkeyAuthentication=no root@<IP>

رؤية Permission denied تعني أن تسجيل الدخول بكلمة المرور معطّل؛ ولا تُغلق الجلسة الأصلية إلا عندما يتصرف الفحصان كما هو متوقع.

💡 في هذه المرحلة لديك جهاز يمكنه تشغيل الوكلاء على المدى الطويل: الأدوات مثبتة، والمفتاح ونقطة النهاية مضبوطان، والمهام تبقى بعد انقطاع الاتصال، وتسجّل الدخول باستخدام مفتاح.

ما تكلفته: جزءان

  • الخادم: يُحتسب من رصيدك للمدة التي تختارها عند الطلب (1 أو 3 أو 6 أو 12 شهرًا) — المدد الأطول تكلف أقل شهريًا. السعر الابتدائي موجود في جدول «مقارنة الخطوط» على qcode.cc/en/cloud.
  • النماذج: تُحتسب لكل token، مع أسعار لكل نموذج مدرجة على qcode.cc/models.

يُخصم كلاهما من رصيد الحساب نفسه.

صفحات ذات صلة

ابدأ مع QCode

مفتاح API واحد لـ Claude Code وCodex وغيرها — تُحسب حسب التوكن، وأسعار كل نموذج على qcode.cc/models

المؤسسات ←