اجرای عاملها روی سرور ابری
اجرای Claude Code یا Codex روی یک سرور ابری: نصب ابزارها، تنظیم کلید و نقطه پایانی، زنده نگه داشتن وظایف با tmux و جابهجایی ایمن به SSH مبتنی بر کلید.
به کلید 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 (پروتکل Responses در OpenAI) — ابتدا پوشه را ایجاد کنید، سپس ~/.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 را نیز مستقیماً اضافه کنید و بهصورت اختیاری گزینه «Key login only (turn off root password login)» را انتخاب کنید. مراحل زیر روش دستی تغییر به ورود با کلید است.
ترتیب مهم است. مستندات Ubuntu دقیقاً درباره همین موضوع هنگام تغییر پیکربندی OpenSSH هشدار میدهد: اگر SSH تنها راه ورود شما باشد و پیکربندی را اشتباه انجام دهید، یک راهاندازی مجدد میتواند دسترسی شما را به سرور خودتان قطع کند. بنابراین ابتدا تأیید کنید، سپس غیرفعال کنید.
فرمانهای زیر با Ubuntu بهعنوان مثال آمدهاند. توزیعهای دیگر نام سرویسها و مسیرهای پیکربندی متفاوتی دارند — مستندات خود آن سیستم را بررسی کنید؛ ترتیب کار (تأیید کلید، سپس غیرفعال کردن گذرواژهها، بررسی پیش از راهاندازی مجدد) ثابت میماند.
- جفت کلید را روی دستگاه خودتان تولید کنید (مستندات Ubuntu Server، بدون تغییر):
bash
ssh-keygen -t ed25519
- کلید عمومی را روی سرور قرار دهید (این فرمان را روی macOS / Linux، یا در WSL روی Windows اجرا کنید؛ فرمان
chmodروی سرور و در پوشه خانه شما پس از ورود اجرا میشود):
bash
ssh-copy-id root@<IP>
صفحه Ubuntu میگوید محتوای id_ed25519.pub را به ~/.ssh/authorized_keys در دستگاه مقصد اضافه کنید و مجوزهای آن فایل را دوباره بررسی کنید — فقط کاربر احراز هویتشده میتواند مجوز نوشتن داشته باشد؛ اگر مجوزها درست نیستند، chmod go-w .ssh/authorized_keys را اجرا کنید.
- تأیید کنید که با کلید وارد میشوید. صفحه آن را اینگونه بیان میکند: «اکنون باید بتوانید بدون درخواست گذرواژه با SSH به target_machine متصل شوید.» (در صفحه Ubuntu،
target_machineبه نشانی سرور شما اشاره دارد؛ این جمله یعنی میتوانید بدون پرسیدن گذرواژه وارد شوید). این مرحله نباید اجازه بازگشت به ورود با گذرواژه را داشته باشد، وگرنه کلیدی که بهدرستی نصب نشده است همچنان وارد میشود:
bash
ssh -o PasswordAuthentication=no -o PreferredAuthentications=publickey -i ~/.ssh/id_ed25519 root@<IP>
با -o PasswordAuthentication=no یک کلید اشتباه بلافاصله با Permission denied شکست میخورد، بهجای درخواست گذرواژه؛ اگر رد شدید، ادامه ندهید — به مرحله 2 برگردید. در این نقطه نشستی را که هنوز با گذرواژه وارد آن شدهاید نبندید؛ یک پنجره ترمینال دوم باز کنید.
- فقط پس از آنکه این کار جواب داد، ورود با گذرواژه را خاموش کنید. ابتدا پیدا کنید کدام فایلها این گزینه را کنترل میکنند — در 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 — «مشخص میکند آیا احراز هویت با کلید عمومی مجاز است.» (یعنی آیا احراز هویت با کلید عمومی مجاز است).
- نحو را بررسی کنید، مقادیر مؤثر را ببینید، سپس راهاندازی مجدد کنید:
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
- پس از راهاندازی مجدد دوباره بررسی کنید و نشست قدیمی را باز نگه دارید. یک ترمینال جدید باز کنید و یک بار دیگر با همان فرمان مرحله 3 با کلید وارد شوید؛ سپس ورود فقط با گذرواژه را امتحان کنید که باید رد شود:
bash
ssh -o PubkeyAuthentication=no root@<IP>
دیدن Permission denied یعنی ورود با گذرواژه خاموش است؛ فقط وقتی هر دو بررسی مطابق انتظار عمل کردند، نشست اصلی را ببندید.
💡 در این مرحله ماشینی دارید که میتواند عاملها را برای مدت طولانی اجرا کند: ابزارها نصب شدهاند، کلید و نقطه پایانی تنظیم شدهاند، وظایف با قطع اتصال از بین نمیروند، و با کلید وارد میشوید.
هزینه آن: دو بخش¶
- سرور: بهازای مدتی که هنگام سفارش انتخاب میکنید (1، 3، 6 یا 12 ماه) از موجودی شما کسر میشود — مدتهای طولانیتر هزینه ماهانه کمتری دارند. قیمت شروع در جدول «Compare lines» در qcode.cc/en/cloud آمده است.
- مدلها: بر اساس هر توکن صورتحساب میشوند و نرخهای هر مدل در qcode.cc/models فهرست شده است.
هر دو از همان موجودی حساب کاربری کسر میشوند.
صفحات مرتبط¶
- سرورهای ابری: انتخاب، خرید و استفاده — انتخاب خط، آزمایش 1 روزه، سفارش و تحویل
- اسکریپت راهاندازی یککلیکی — نصب ابزارها و نوشتن پیکربندی
- متغیرهای محیطی — متغیرهایی که هر ابزار میخواند
- شروع سریع Codex — config.toml و auth.json برای Codex
- صورتحساب و قواعد سرور ابری — شرایط، تمدید خودکار، بازپرداختها و سیاست استفاده قابل قبول
با QCode شروع کنید
یک کلید API برای Claude Code، Codex و بیشتر — بر اساس توکن، قیمت هر مدل در qcode.cc/models