Table of Contents

يحتاج وكيل سطر الأوامر إلى وصول مفيد، وليس نسخة من كل بيانات الاعتماد. تقدم هذه الدليل تصميمًا محدودًا لـ 1Password CLI، ووكيل 1Password SSH، ووصول Bitbucket Git، وبروتوكول سياق النموذج (MCP). يستخدم سير العمل الأول أسماء اصطناعية، وإجراءات للقراءة فقط، وموافقة بشرية عند حد SSH.

التمييز الرئيسي بسيط. يستخدم SSH التفاعلي الموافقة من خلال وكيل 1Password SSH. أما الأتمتة غير المراقبة فتحتاج إلى هوية منفصلة، ووصول ضيق، ودورة حياة مختلفة للمفتاح. لا تعامل اتصال MCP كإذن لتنفيذ أي من سيري العمل.

النقاط الرئيسية

  • حماية المفتاح الخاص: يقوم وكيل 1Password SSH بمصادقة SSH مع إبقاء المفاتيح الخاصة داخل تطبيق 1Password.
  • معالجة المفتاح العام: انشر مفتاحًا عامًا فقط إلى Bitbucket أو حساب بعيد. احتفظ بالنصف الخاص في عنصر مفتاح SSH.
  • الموافقة التفاعلية: يوافق شخص على عميل أو جلسة طرفية قبل أن يستخدم وكيل SSH المفتاح.
  • الفصل غير المراقب: يحتاج مهمة مجدولة إلى حساب خدمة مخصص ونطاق خزانة ضيق. لا تلبي موافقة وكيل SSH التفاعلية هذا الاحتياج.
  • حدود MCP: يربط MCP الوكيل بالأدوات والموارد. لا يزال العميل، والخادم، ونظام التشغيل، وسياسة 1Password تتحكم في الوصول.

قبل أن تبدأ

المتطلبات المسبقة: ثبّت 1Password 8 و1Password CLI الإصدار 2.20.0 أو أحدث. سجّل الدخول عبر حساب 1Password مدعوم. استخدم عميل OpenSSH. أنشئ مستودع Bitbucket تجريبيًا أو هدفًا آخر غير إنتاجي. احتفظ بطريق إداري ثانٍ متاحًا للتراجع.

الوقت: 30 إلى 45 دقيقة لمراجعة التصميم ومراجعة اصطناعية.

الصعوبة: متوسطة. تحتاج إلى معرفة أساسية بـ Git، وSSH، وshell، والتحكم في الوصول.

يغطي هذا الدليل التصميم والتخطيط. تغطي مقالة Bitbucket المرتبطة حدود الوصول الخاصة بـ Bitbucket. لا يختبر هذا الدليل حسابًا حيًا، ولا ينشئ مفتاحًا حقيقيًا، ولا يتصل بمضيف حقيقي، ولا يسجّل خادم MCP حقيقيًا. كل المعرّف أدناه اصطناعي. استبدل العناوين الوهمية فقط داخل بيئتك الخاضعة للتحكم.

وضعية الإصدار: استخدم 1Password 8 و 1Password CLI 2.20.0 أو أحدث لهذا سير العمل. 1Password CLI 1 غير مدعوم . 1Password 7 سيتوقف عن الدعم في أوائل 2027 . تتطلب توليد مفاتيح SSH، واستيرادها، ومشاركتها 1Password 8. تأكد من إصدارات Git المثبتة، وOpenSSH، ومضيف MCP، وخادم MCP قبل الاختبار. تبقى الأمثلة أدناه غير مختبرة.

الخزنة (Vault) هي مجموعة محمية من العناصر في 1Password. OpenSSH هو برنامج عميل وخادم SSH المستخدم في العديد من أنظمة التشغيل. MCP، أو بروتوكول سياق النموذج (Model Context Protocol)، يربط الوكيل (Agent) بالأدوات أو الموارد المعتمدة.

لماذا يُفضَّل إبقاء المفاتيح الخاصة غير مقروءة

يتكوّن زوج مفاتيح SSH من مفتاح عام ومفتاح خاص. يخزّن خدمة Git عن بُعد أو الخادم المفتاح العام. يثبت العميل امتلاكه للمفتاح الخاص أثناء المصادقة. لا يحتاج المفتاح الخاص إلى الانتقال إلى الخدمة عن بُعد.

يمتد وكيل SSH من 1Password هذا النموذج. تنص وثائقه على أن عملاء SSH وGit يصادقون عبر الوكيل بينما يبقى المفتاح الخاص داخل تطبيق 1Password. يستلم العميل نتيجة التوقيع، وليس ملف المفتاح الخاص.

تقلّل هذه الحدود من مسارات التعرّض التالية:

  • التحكم في المصدر: لا يدخل المفتاح الخاص إلى مستودع أو طلب سحب (Pull Request).
  • سجل الطرفية (Shell): لا تظهر قيمة المفتاح الخاص في حجة الأمر.
  • الملفات المؤقتة: لا يحتاج السكربت إلى كتابة المفتاح الخاص في ~/.ssh/.
  • سياق الوكيل: لا يحتاج نموذج اللغة الكبير (LLM) إلى نص المفتاح الخاص لطلب عملية SSH.
  • إعادة الاستخدام العرضية: لا يبقى المفتاح المنسوخ في مساحة عمل قديمة بعد انتهاء المهمة.

لا تجعل هذه الحدود SSH آمنًا تمامًا. قد يؤدي عملية لها صلاحية استخدام جسر الوكيل (Agent socket) إلى تنفيذ إجراءات باسم المفتاح المعتمد. لا تزال التحقق من مفتاح المضيف، وحدود الحسابات عن بُعد، وصلاحيات المستودع، وسياسة الأوامر، وعزل العمليات مهمة.

تحمي حدود المفتاح الخاص مادة المفتاح. لا تعني هذه الحدود الموافقة على أمر عن بُعد أو إثبات أن المضيف المستهدف موثوق.

موافقة SSH التفاعلية

قم بإعداد خزنة مخصصة لمفاتيح الوكيل. استخدم ملف إعدادات وكيل SSH لاختيار أصغر مجموعة مفاتيح ومفتاح محدد للمضيف. لا تعرّض كل مفتاح مؤهل من كل خزنة مدمجة لعملية أتمتة.

يربط نموذج أمان وكيل SSH من 1Password الموافقة بالمفتاح والعميل الطالب. يحدد الطلب العملية والمفتاح. ثم يوافق الشخص على الطلب عبر طريقة المصادقة المُعدّة.

توثّق 1Password نطاقات موافقة متعددة. الموافقة لكل مفتاح ولكل تطبيق هي الافتراضية. يضيّق نطاق جلسة الطرفية (Terminal-session) الموافقة على تبويب أو جلسة معينة. تطلب الموافقة لكل طلب تأكيدًا مرة أخرى لكل طلب. توجد خيار موافقة لكل العمليات، لكن هذا الخيار يمنح كل عملية تحت مستخدم نظام التشغيل الحالي صلاحية الوصول للجلسة.

استخدم نطاق الاعتماد الأضيق المناسب للمهمة. يجب أن يعمل وكيل إدارة الأنظمة في طرفية مخصصة أو بيئة معزولة (Sandbox). لا تعتمد على كل عملية عندما تكون جلسة طرفية واحدة كافية.

جلسة الاعتماد ليست ترخيصًا دائمًا. تسجّل 1Password التفويض للفترة المهيأة أو حتى قفل التطبيق أو خروجه. عند قفل التطبيق، لا يحتفظ الوكيل بالمفاتيح الخاصة للاستخدام اللاحق. تستمر عملية SSH Agent في الخلفية عند تمكين الإعداد المدعوم بينما يكون 1Password مغلقًا، لكن طلب التوقيع الجديد يتطلب إلغاء قفل 1Password.

يُظهر دليل إعداد SSH في 1Password]( https://www.1password.dev/ssh/get-started ) التدفق العام: توليد أو استيراد مفتاح، نشر المفتاح العام، تمكين SSH Agent، تكوين عميل SSH، تنفيذ أمر SSH أو Git، والاعتماد على الطلب. يختلف مسار المقبس (socket path) الدقيق حسب نظام التشغيل. استخدم تعليمات المنصة الحالية بدلاً من نسخ مسار من جهاز آخر.

يجب إلغاء قفل تطبيق 1Password قبل نجاح طلب التوقيع الجديد. قد تستمر عملية الوكيل في الخلفية بينما يكون التطبيق مغلقًا. لا يحرر التطبيق المقفل مواد المفتاح الخاص للتوقيع.

المفاتيح العامة وBitbucket

يوثّق دليل إدارة المفاتيح في 1Password]( https://www.1password.dev/ssh/manage-keys ) عناصر SSH Key، وتوليد المفاتيح، واستيراد المفاتيح، والمفاتيح العامة، والبصمات، والمفاتيح الخاصة. يستخدم مثال CLI الأمر op item create --category ssh لإنشاء عنصر SSH Key. يولّد 1Password CLI مفتاح Ed25519 افتراضيًا لهذا المثال ويحجب المفتاح الخاص في مخرجاته.

يستخدم Bitbucket Cloud سير عمل سطر الأوامر العادي لـ Git وOpenSSH. يصف دليل سطر الأوامر]( https://support.atlassian.com/bitbucket-cloud/docs/find-the-command-line/ ) عمليات Git من مستودع محلي. يحدد دليل تكوين SSH]( https://support.atlassian.com/bitbucket-cloud/docs/configure-ssh-and-two-step-verification ) أشكال البعيد (remote) لـ SSH وأنصاف المفاتيح العامة المدعومة.

عامل مع Bitbucket كمستهلك للمفتاح العام. سجّل المفتاح العام أو البصمة عبر إعداد حساب Bitbucket المعتمد أو إعداد المستودع. احتفظ بالمفتاح الخاص في 1Password. يطلب عميل Git من SSH Agent التوقيع. لا يقرأ العميل ملف المفتاح الخاص.

لمجال مفتاح الوصول لـ Bitbucket، ومسار التسجيل، واختبار Git للقراءة فقط، راجع Bitbucket Cloud SSH Keys and Git CLI: Read-Only Access for AI Agents](/articles/bitbucket-cloud-ssh-keys-git-cli-mcp-agent-automation/).

تُسمّي وثائق Bitbucket هذا سير عمل Git CLI. لا تفترض هذه المقالة وجود خادم MCP منفصل لـ Bitbucket أو منتجًا باسم Bitbucket CLI. يحتاج CLI الخاص بـ Bitbucket إلى وثائقه الحالية الخاصة ومراجعة أذونات خاصة به.

حدود الوكيل وMCP

استخدم مواصفة MCP الحالية عند مراجعة خادم جديد.

رابط مواصفة 2025-06-18 في الفقرة الخلفية التالية هو إصدار تاريخي. استخدم مواصفة 2026-07-28 للمراجعات الجديدة.

يُوحّد MCP الاتصالات بين تطبيق LLM، وموصل العميل، والخادم. يقدم الخادم أدوات أو موارد أو موجهات. تنص المواصفة أيضًا على أن المضيفين يجب أن يحصلوا على موافقة المستخدم قبل كشف البيانات أو استدعاء الأدوات.

لا تمنح MCP نفسها أذونات. لا تزال أداة MCP تعمل ضمن أذونات عملية الخادم، ومستخدم نظام التشغيل، ومسار الشبكة، وحساب السحابة، والبيانات الاعتمادية المُهيأة. وصف الأداة ليس سياسة تفويض.

تصف وثائق 1Password Security for AI خادم MCP البيئات وأنماط إعداد MCP الآمنة. تصف الصفحة نفسها تحميل قيم إعداد MCP وقت التشغيل من 1Password. لا تُعرّف هذه الصفحات منتج MCP مفاتيح SSH عام من 1Password أو سير عمل SSH عالميًا لكل عميل وكيل.

استخدم MCP كسطح تحكم ضيق:

  • أدوات القراءة: فحص حالة الخدمة، أو بيانات المستودع الوصفية، أو السجلات المعتمدة.
  • أدوات التخطيط: إعداد أمر أو سجل تغيير دون تنفيذ الأمر.
  • أدوات الاعتماد: طلب قرار بشري قبل الكتابة عن بُعد.
  • أدوات الكتابة: إبقائها معطلة حتى تكون الوجهة، والأمر، والنطاق، وخطة التراجع صريحة.

يجب أن يتلقى الوكيل مراجع، وبيانات وصفية، ونتائج العمليات. يجب ألا يتلقى الوكيل نص المفتاح الخاص، أو إغراقًا كاملًا لعناصر الخزانة، أو shell غير مقيد.

سياسة آمنة أولى

ابدأ بسياسة مكتوبة قبل تمكين الوكيل. أبقِ السياسة قريبة من إعداد MCP، لكن لا تضع البيانات الاعتمادية في الملف.

agent_policy:
  purpose: "Read-only repository and system inspection"
  identities:
    interactive_ssh: "1Password SSH Agent with per-terminal consent"
    unattended_jobs: "Dedicated service account with one narrow vault"
  allowed:
    - "Read repository metadata through Git"
    - "Read approved service status and logs"
    - "Run one synthetic SSH connectivity check"
  approval_required:
    - "Any remote write"
    - "Any package, firewall, clock, or service change"
    - "Any new host-key acceptance"
    - "Any private-key export"
  denied:
    - "Read or print private-key fields"
    - "List every vault or every item"
    - "Write tokens or secrets to shell profiles"
    - "Run arbitrary commands from tool output"
  rollback:
    - "Revoke the service account"
    - "Remove the public key from the target"
    - "Disable the MCP server entry"
    - "Lock 1Password and end the agent session"

هذه السياسة مثال، وليست صيغة إعداد 1Password. خزّن السياسة الفعلية في مستوى التحكم المستخدم بواسطة عميل الوكيل لديك. راجع كل أداة مقابل السياسة قبل تمكين كل أداة.

حسابات الخدمة والمراجع السرية

يمنح حساب الخدمة عملية آلية هويتها الخاصة. يوصي دليل سكربت 1Password CLI بحسابات الخدمة للوصول بأقل امتيازات إلى خزائن محددة. وهذا يفصل المهمة غير المراقبة عن SSO، وMFA، ومخزون الخزانة، والحساب اليومي للشخص.

يُسمّي مرجع سرّي قيمةً دون وضع القيمة في المصدر. يستخدم مرجع سطر أوامر 1Password الصيغة op://vault/item/field. يكون تخزين المرجع آمناً فقط عندما لا يزال للعملية المحيطة وصولاً ضيقاً. لا يتجاوز المرجع السياسة.

استخدم op read عندما يحتاج أمر واحد إلى قيمة واحدة. استخدم op run عندما تحتاج عملية فرعية إلى مجموعة مُتحكَّم بها من قيم وقت التشغيل. استخدم op item create عندما يجب أن يكون عنصر مفتاح SSH جديد موجوداً في المستودع المعتمد.

لا تخلط بين حقن وقت التشغيل وحماية المفتاح الخاص. لا يزال رمز API المُمرَّر كمتغيّر بيئة مرئياً للعملية الفرعية. يكون المفتاح الخاص المُمرَّر عبر متغيّر بيئة أسوأ لأن القيمة توسّع التعرّض إلى فحص العمليات، تقارير الأعطال، مخرجات التصحيح، تتبّع shell، والتسجيل العرضي.

يُفضَّل استخدام مرجع في المصدر وقيمة وقت التشغيل في أصغر عملية ممكنة. اجعل العملية قصيرة العمر. عطّل تتبّع shell. لا تُطبع البيئة. احذف الملفات المؤقتة بعد تشغيل فاشل.

سير عمل آمن أولاً

يفصل التسلسل أدناه بين تسجيل المفتاح العام، وSSH التفاعلي، واكتشاف MCP، والتصميم غير المُراقَب.

1. تحديد الهدف

اكتب فئة الهدف، والحساب البعيد، والمستودع أو الأمر المقصود، ومصدر مفتاح المضيف، ومالك الاعتماد، وإجراء التراجع. استخدم سجلاً اصطناعياً أثناء التمرين الأول.

target_class: test-repository
remote_account: git
operation: read-only connectivity check
host_key_source: approved administrator record
approval_owner: named operator
rollback: remove public key and revoke test identity

النتيجة المتوقعة، غير مُختبَرة: يحدد السجل هدفاً واحداً وعملاً واحداً. لا يحتوي السجل على اسم مضيف، أو عنوان IP، أو رمز، أو مفتاح خاص، أو بيانات شخصية.

2. إنشاء أو اختيار عنصر مفتاح SSH

يوثّق دليل مفاتيح SSH في 1Password نمط الإنشاء عبر سطر الأوامر. يستخدم الأمر أدناه عنواناً اصطناعياً ومستودع اختبار مُسمّى.

op item create --category ssh --ssh-generate-key=ed25519 --vault "synthetic-test-vault" --title "synthetic-agent-admin-key"

المخرجات المتوقعة، غير مُختبَرة: ينشئ 1Password عنصر مفتاح SSH في مستودع الاختبار المُسمّى ويحجب المفتاح الخاص في مخرجات الطرفية. يغيّر الأمر حالة 1Password. تعتمد المخرجات البشرية الدقيقة على إصدار سطر الأوامر وحالة تسجيل الدخول.

التقط معرّف العنصر المُعاد في السجل الاختباري دون نسخ حقل المفتاح الخاص. استخدم المعرّف أو عنوان العنصر الدقيق للقراءات المحددة للحقل لاحقاً فقط بعد تأكيد مخطط العنصر.

لا تُوجّه هذا المخرج إلى سجل مشترك. التقط معرّف العنصر، وبصمة المفتاح العام، وسجل الاعتماد فقط عندما يدعم الإجراء المحلي مخرجات مهيكلة آمنة.

3. معالجة المفتاح العام

افتح عنصر مفتاح SSH في 1Password واستخدم إجراء نسخ المفتاح العام. استخدم مرجعًا محددًا للحقل فقط بعد تأكيد تسمية حقل المفتاح العام في حسابك الخاص. لا تُخرج العنصر كاملًا.

PUBLIC_KEY_REF="op://synthetic-test-vault/synthetic-agent-admin-key/synthetic-public-key-field"
op read "$PUBLIC_KEY_REF"

المخرجات المتوقعة، غير مُختبرة: سطر واحد اصطناعي لمفتاح OpenSSH العام أو قيمة مفتاح عام من الحقل المؤكَّد. اسم الحقل الوهمي أعلاه ليس وعدًا بتسمية حقل العنصر لديك.

سجِّل المفتاح العام في حساب Bitbucket المعتمد، أو مستودع Bitbucket، أو الحساب البعيد. لا تلصق أبدًا المفتاح الخاص المطابق في Bitbucket. يوصي أيضًا دليل Bitbucket لـ SSH]( https://support.atlassian.com/bitbucket-cloud/docs/configure-ssh-and-two-step-verification ) بتسجيل مفتاح مضيف Bitbucket قبل أول اتصال.

بالنسبة إلى Bitbucket، احصل على سجل مفتاح المضيف المنشور وقارن السجل بنسخة موثوقة مستقلة قبل إضافة سطر إلى ~/.ssh/known_hosts. استخدم فحص المضيف الصارم بعد نجاح المقارنة. لا تقبل مفتاح مضيف مُعدَّل أثناء تشغيل الوكيل.

4. تفعيل SSH التفاعلي

فعِّل وكيل SSH الخاص بـ 1Password في تطبيق سطح المكتب. اضبط OpenSSH باستخدام القيمة IdentityAgent أو SSH_AUTH_SOCK الخاصة بالمنصة من دليل الإعداد الرسمي]( https://www.1password.dev/ssh/get-started) . قيِّد الاختبار الأول بمستودع واحد أو حساب غير إنتاجي واحد.

على macOS أو Linux، اضبط المقبس (socket) من دليل إعداد المنصة وشغِّل ssh-add -l. على Windows، استخدم إعداد الأنبوب المسمّى المدعوم وتحقَّق من المفاتيح المتاحة عبر واجهة وكيل SSH الخاص بـ 1Password أو اختبار SSH موثَّق على Windows. لا تُقدِّم ssh-add -l كأمر تحقق عبر المنصات.

على macOS أو Linux فقط:

ssh-add -l
git ls-remote "<repository-ssh-url>" HEAD

المخرجات المتوقعة، غير مُختبرة: على macOS أو Linux، يُدرج ssh-add -l البصمات من الوكيل النشط. على Windows، استخدم اختبار الأنبوب المسمّى الموثَّق أو واجهة وكيل SSH الخاص بـ 1Password. يُعيد نجاح قراءة Git مرجع التزام. يتطلب اسم المستودع الوهمي أعلاه الاستبدال في اختبار مُتحكَّم به.

يستخدم الأمر اسم مستودع وهميًا. استبدل الاسم الوهمي فقط في اختبار مُتحكَّم به. لا توافق على مطالبة لهدف أو عملية لم تتوقعها.

5. إضافة MCP بعد عمل مسار SSH

أولًا، تحقَّق من عميل SSH والهدف دون MCP. ثم أضف خادم MCP للقراءة فقط أو مُوصِّلًا محليًا واحدًا. امنح الوكيل أداة مثل read_status أو prepare_command. لا تبدأ بأداة shell عامة.

يجب أن تشير إعدادات MCP إلى قيم وقت التشغيل عبر آلية البيئة المدعومة من قبل العميل. يصف دليل أمان 1Password للذكاء الاصطناعي ]( https://www.1password.dev/security-for-ai ) استبدال رموز إعدادات MCP النص الصريح بمتغيرات بيئية يتم تحميلها من 1Password. احتفظ بالمرجع أو اسم المتغير في الإعدادات. أبعد القيمة المحلولة عن سجل الوكيل.

تصف هذه القسم تصميمًا، وليس إعداد MCP مُختبرًا. لا يتم تثبيت أي عميل، أو خادم، أو نقل، أو إصدار، أو عينة هنا هنا. تحقق من خادم للقراءة فقط في ملف اختبار منفصل قبل ربط الوكيل بنظام إنتاج.

6. تسجيل النتيجة

سجّل الفئة المستهدفة، واسم الأداة، وقرار الموافقة، وبصمة المفتاح العام، ونتيجة الأمر، ونتيجة التنظيف. احذف القيم السرية. علّم كل مخرَج كمُلاحظ أو متوقع.

النتيجة المتوقعة، غير مُختبرة: يقرأ الوكيل الحالة، ويقترح أمرًا محدود النطاق، ويستلم موافقة صريحة لطلب SSH، ويكمل عملية القراءة فقط، وينتج سجلًا دون نص المفتاح الخاص.

تسلسل الأوامر الاصطناعي

يُظهر التسلسل التالي الترتيب دون استخدام بنية تحتية حقيقية. هذه الأوامر أمثلة فقط. لم يتم تنفيذها أثناء إعداد المقال.

op --version
op item create --category ssh --ssh-generate-key=ed25519 --vault "synthetic-test-vault" --title "synthetic-agent-admin-key"
op read "op://synthetic-test-vault/synthetic-agent-admin-key/synthetic-public-key-field"
# macOS or Linux only
ssh-add -l
git ls-remote "<repository-ssh-url>" HEAD

المخرَج المتوقع، غير مُختبر:

2.x.y
SSH Key item created. Private key: redacted
ssh-ed25519 AAAA<synthetic-public-key> synthetic-key-label
256 SHA256:<synthetic-fingerprint> synthetic-agent-admin-key (ED25519)
<synthetic-commit-id>        HEAD

كتلة المخرَج توضيحية. لا تمثل الكتلة تشغيلًا ضد حساب 1Password، أو Bitbucket، أو مزود Git، أو مضيف بعيد. يجب أن يخزن سجل الإنتاج بيانات وصفية معتمدة وحالة نجاح أو فشل فقط.

الوصول التفاعلي مقابل الوصول غير المراقب

وضع الوصولالهويةمسار المفتاح الخاصنموذج الموافقة
SSH تفاعليحساب بشري عبر 1Password SSH Agentيبقى المفتاح الخاص في تطبيق 1Passwordيوافق الإنسان على عملية، أو جلسة طرفية، أو طلب
قراءة مجدولةحساب خدمة مخصصop run يوفر قيم وقت تشغيل ضيقة النطاقسياسة المهمة ونطاق حساب الخدمة
SSH مجدولهوية أتمتة مخصصةيبقى تصدير المفتاح تصميمًا كحل أخيرعزل المهمة، وعمر قصير، وتقييد المضيف، والتدوير
كتابة الوكيلهوية بشرية أو هوية محددة للمهمةيعتمد على التكامل المعتمدموافقة الإنسان قبل كل تغيير معرّف

لا تخطط لتدفق عمل حول مطالبة وكيل SSH التفاعلي. استخدم تصميم أتمتة منفصلًا أو احتفظ بالخطوة مُشغَّلة يدويًا.

للوظائف غير المُشرفة عليها، أنشئ حساب خدمة مع وصول إلى خزانة واحدة أو مجموعة صغيرة من العناصر. امنح الوظيفة غرضًا واحدًا. استخدم مستودعًا مخصصًا أو حساب خادم. أضف التحقق من مفتاح المضيف. اضبط مهلة تنفيذ. سجّل بيانات وصفية للإجراءات دون الأسرار. دوّر أو أوقف صلاحية الهوية بعد الاختبار.

إذا كانت الوظيفة غير المُشرفة عليها بحاجة فعلية إلى مفتاح SSH خاص، استخدم مفتاح أتمتة مخصصًا مع حساب بعيد ضيق النطاق وتاريخ انتهاء موثق. جلب المفتاح الخاص باستخدام op read لا يزال يُصدّر مادة المفتاح عبر حد العملية. هذا التصميم له نطاق تأثير أكبر من 1Password SSH Agent. يُفضَّل استخدام هوية منصة، أو خدمة نشر، أو هوية عمل أخرى عندما يدعم الهدف ذلك.

لماذا ترفع متغيرات البيئة الصريحة المخاطر

تحافظ متغيرات البيئة على الأسرار خارج ملفات المصدر، لكنها لا تجعل الأسرار غير مرئية. تقرأ العملية الفرعية بيئتها. قد تكشف فحص العمليات، ومعالجات الأعطال، ومخرجات التصحيح، وتتبع shell، والسجلات المنسوخة للأوامر، القيم.

توثّق 1Password op run كطريقة وقت تشغيل لتحميل المراجع إلى عملية فرعية. استخدم op run للقيم التي تحتاجها العملية فعليًا. اجعل العملية الفرعية قصيرة العمر وقيّد أمرها. لا تمرر مفتاحًا خاصًا عبر SSH_PRIVATE_KEY، أو KEY، أو متغير مشابه عندما يزيل SSH Agent الحاجة إلى التصدير.

الترتيب الأكثر أمانًا هو:

  1. استخدم SSH Agent لـ SSH التفاعلي.
  2. استخدم تسجيل المفتاح العام لـ Bitbucket أو الحساب البعيد.
  3. استخدم op run لعملية فرعية غير مُشرفة عليها ضيقة النطاق.
  4. استخدم op read لقيمة واحدة عندما لا تحتاج العملية الفرعية إلى بيئة كاملة.
  5. صدّر المفتاح الخاص فقط بعد استثناء مكتوب، ونطاق ضيق، وخطة تنظيف، وخطة تدوير.

جدول القرار

الحاجةالمسار المفضلسبب التوقف أو إعادة التصميم
تشغيل Git عبر SSH بواسطة شخصوكيل SSH من 1Passwordالتوقف إذا ذكر الطلب عملية أو مفتاح غير متوقع
تسجيل مفتاح مستودعقراءة المفتاح العام أو التعبئة التلقائيةعدم نسخ المفتاح الخاص إلى خدمة المستودع أبدًا
قراءة الوكيل لحالة الخدمةأداة MCP للقراءة فقط مع نطاق على مستوى نظام التشغيلالتوقف إذا كانت الأداة تعرض shell غير مقيد
اقتراح الوكيل لتغيير عن بُعدأداة التخطيط متبوعة بالموافقة البشريةالتوقف إذا كان الهدف أو الأمر أو خطة التراجع غير واضحة
قراءة المهمة لرمز API واحدحساب خدمة بالإضافة إلى op read أو op runالتوقف إذا دخل الرمز إلى المصدر أو السجلات أو الملف الشخصي العام
تحتاج المهمة إلى وصول SSHهوية الحمل أو مفتاح أتمتة مخصصالتوقف إذا كانت المهمة تتطلب مفتاحًا شخصيًا أو حسابًا واسع الصلاحيات
تحتاج إعدادات MCP إلى رمزمرجع وقت التشغيل يُحمّل بواسطة العميل المدعومالتوقف إذا تم التأكيد على رمز نصي صريح في الإعدادات

معالجة الأعطال

طلب موافقة SSH غير متوقع: رفض الطلب. تحقق من اسم العملية، جلسة الطرفية، بصمة المفتاح، هدف المستودع، ومفتاح المضيف. راجع إعدادات عميل SSH قبل إعادة المحاولة.

عدم وجود جوارب وكيل SSH: تأكد من تثبيت تطبيق سطح مكتب 1Password عبر طريقة مدعومة، وتمكين وكيل SSH، واستخدام العميل لجوارب محددة لكل منصة. تصفّح صفحة وكيل SSH الرسمية التي تدرج متطلبات نظام التشغيل وروابط إعداد الجوارب.

فشل المصادقة بالمفتاح العام: تحقق من المفتاح العام المحدد، الحساب البعيد، إذن المستودع، مفتاح المضيف، وإعدادات SSH. استخدم مقارنة بصمة عامة. لا تحل الخطأ عن طريق تصدير مفتاح خاص غير ذي صلة.

op read يرفض الوصول: تحقق من نطاق خزينة حساب الخدمة، معرّف العنصر، مرجع الحقل، حالة تسجيل الدخول، وحالة العنصر. قلّل المرجع إلى عنصر واحد معتمد. لا توسّع منح الخزينة كإجراء أولي.

op run يكشف قيمة: أوقف المهمة. احتفظ بسجل الحادثة الأدنى فقط. احذف السجلات المنسوخة والملفات المؤقتة وفقًا لإجراء الاحتفاظ الخاص بك. دوّر السر أو المفتاح المتأثر. راجع تتبع shell، فحص العمليات، تقارير الأعطال، واحتفاظ سجلات MCP.

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

التراجع والإزالة

يبدأ التراجع بإزالة الوصول، وليس بحذف الملفات.

  1. أوقف الوكيل أو المهمة المجدولة. عطّل إدخال خادم MCP أو افصل العميل.
  2. قفل 1Password. أنهِ جلسة الترخيص التفاعلي لـ SSH.
  3. أزل المفتاح العام. احذف المفتاح التجريبي من Bitbucket، أو المستودع، أو الحساب البعيد.
  4. اسحب صلاحية حساب الخدمة. أزل وصوله إلى الخزنة وأبطل مفعول رمزه.
  5. احذف عنصر مفتاح SSH التجريبي بعد التأكد من عدم استخدام أي سير عمل معتمد لهذا العنصر.
  6. أزل الإعدادات المؤقتة. احذف المراجع التجريبية، وتجاوزات المقبس المحلي، والسجلات المولدة.
  7. راجع الأدلة. تأكد من أن سجل التراجع لا يحتوي على أي مفتاح خاص، أو رمز، أو تفريغ بيئة.

حذف ملف محلي لا يسحب صلاحية المفتاح العام، أو حساب الخدمة، أو الرمز المخزّن مؤقتًا، أو الترخيص البعيد. أزل كل تفويض من مصدره.

استكشاف الأخطاء وإصلاحها

يطلب الوكيل مفتاحًا في كل أمر

تحقق من نطاق الترخيص المحدد. الموافقة لكل طلب تكون أكثر تقييدًا. ربما انتهت جلسة الطرفية أو التطبيق. كما يطلب 1Password مرة أخرى بعد حدث القفل أو الخروج.

يرى الوكيل مفتاحًا خاصًا في سجله

أوقف سير العمل وغيّر المفتاح. افحص استجابة خادم MCP، وأمر shell، وسجل التصحيح، وغلاف الأداة. استبدل قراءات المفتاح الخاص باستخدام SSH Agent للمهام التفاعلية. بالنسبة للمهام، استبدل المفتاح الشخصي بهوية مخصصة واستثناء موثق.

تحتوي قائمة المفاتيح على هويات كثيرة جدًا

يعرض وكيل SSH في 1Password المفاتيح المؤهلة من الخزائن المُعدّة له. استخدم إعداد وكيل محدود النطاق أو إعداد SSH محدد المضيف. كما تشير وثائق الوكيل إلى حد الستة مفاتيح لخادم OpenSSH.

يعمل الأمر يدويًا لكنه يفشل في المهمة

قارن الهوية، ونطاق الخزنة، والبيئة، وبيانات مفتاح المضيف، ومجلد العمل، وفرضيات الموافقة. تتضمن جلسة 1Password التفاعلية موافقة بشرية. أما المهمة المجدولة فلا تتضمن ذلك. صمّم المهمة كنمط وصول منفصل.

خادم MCP متصل لكن المهمة تفشل

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

الخطوات التالية

استخدم مواصفة MCP الحالية بتاريخ 2026-07-28 للموافقات الجديدة. أي رابط لمواصفة 2025-06-18 في هذا المقال هو خلفية تاريخية.

ابدأ بمستودع اصطناعي واحد وأداة MCP للقراءة فقط. سجّل كل نتيجة متوقعة كغير مُختبَرة حتى تنتج بيئة مُتحكَّم بها أدلة. ثم كرّر سير العمل مع هدف غير إنتاجي، ومشغّل مُسمّى، ومفتاح مضيف مُتحقَّق منه، وسجل تراجع مكتوب.

اقرأ مرجع سطر أوامر 1Password لمعرفة أعلام الأوامر الحالية. اقرأ تحميل الأسرار إلى السكربتات قبل إنشاء أتمتة حساب الخدمة. اقرأ مواصفة MCP قبل الموافقة على أدوات من خادم جديد.

حافظ على SSH التفاعلي معتمدًا من قِبل البشر. حافظ على الوصول غير المُراقَب منفصلًا. حافظ على المفاتيح الخاصة غير قابلة للقراءة دائمًا عندما يدعم الهدف المصادقة عبر الوكيل.