الأمان

مساعد بيانات الاعتماد

يحمل Gitcito ثلاثة أنواع مختلفة من الأسرار، والناس يفترضون بحق أنها شيء واحد:

يحمله
رموز واجهات المضيفين — طلبات السحب والمشكلات وفحوص التكامل المستمر Gitcito، في سلسلة مفاتيح نظامك
نقل git@… مفتاح SSH الخاص بك، عبر وكيل ssh في النظام
نقل https:// مساعد بيانات الاعتماد الخاص بـ git

الثالث ليس ميزة في نظر أحد إلى أن يتعطّل، فينتج عندها أكثر شكويين شيوعًا في git: لماذا يسألني من جديد؟ ولماذا ما زال يرسل الرمز الذي ألغيته؟

⌘K ← مساعد بيانات الاعتماد.

المساعد المهيّأ وقواعد كل مضيف وتحذير الملف النصي الصريح

ما الذي تنظر إليه

كل credential.helper مهيّأ، في النطاق الذي جاء منه — system ثم global ثم هذا المستودع. المساعدون يتراكمون: يسأل git كلًّا منهم بدوره، والمساعد على مستوى المستودع لا يحلّ محل المساعد العام.

ويُفحص كل واحد منهم في مواجهة حاسوبك:

العلامة تعني
جاهز برنامج المساعد موجود وسيعمل
غير مثبَّت مهيّأ، لكن البرنامج مفقود — فكل مطالبة تسقط إلى كتابة كلمة المرور من جديد
كلمات مرور في ملف صريح المساعد store (انظر أدناه)

قواعد لمضيفين بعينهم تسرد أقسام credential.<url>.*. وهذه تتغلب على الإعداد العادي في الروابط التي تطابقها، وهي عادةً جواب سؤال «لماذا يتصرف هذا المضيف بالذات على نحو مختلف».

اختيار واحد

المساعد إلى أين تذهب كلمة المرور
osxkeychain سلسلة مفاتيح macOS — مشفَّرة، لكل مستخدم
manager Git Credential Manager (على ويندوز، وعبر المنصات)
wincred مدير بيانات اعتماد ويندوز
libsecret خدمة الأسرار في لينكس (GNOME Keyring، KWallet)
cache الذاكرة، لمدة 15 دقيقة. لا شيء على القرص
store ملف صريح في مجلد المنزل. غير مشفَّر

يعرض Gitcito ما هو مثبَّت فعلًا على هذا الحاسوب، ويؤشّر على ما يناسب نظامك، ويطفئ البقية.

النطاق مهم. لكل المستودعات يكتب في تهيئتك العامة، وهو ما تريده في معظم الأحيان؛ ولهذا المستودع فقط يخصّ المستودع الشاذ الذي يستوثق مع شيء آخر.

المساعد store وملف ~/.git-credentials

يكتب store أسطرًا بصيغة https://user:password@host في ~/.git-credentials، نصًّا صريحًا، بلا أي تشفير من أي نوع. وكل ما يعمل بصلاحياتك يستطيع قراءته: سكربت، أو خطاف postinstall لأحد الاعتماديات، أو أي شيء.

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

وإن وجدت واحدًا ولم تكن تقصده: اختر مساعدًا حقيقيًا من هنا، ثم احذف الملف وأعد الاستيثاق مرة واحدة.

نسيان بيانات اعتماد مخزَّنة

حين يُلغى رمز أو يُدوَّر، يظل المساعد يسلّم القديم فيفشل كل إرسال بخطأ 401 لا يسمّي شيئًا. انسَ يطلب من المساعد المهيّأ محو مدخلته لذلك المضيف — git credential reject، وهو المسار الموثَّق من git نفسه.

ولا شيء يُقرأ في الطريق: لا يستدعي Gitcito أبدًا git credential fill، الأمر الذي كان سيطبع كلمة مرور حية على المخرج القياسي.

الإرسال التالي يسألك مرة واحدة، ويخزّن المساعد الجواب الجديد.

حدود تستحق المعرفة

  • هذا مخزن git، لا مخزن Gitcito. تغييره يغيّر ما تفعله طرفيتك أيضًا — وهذا هو المقصود، ويستحق أن تعرفه قبل أن تغيّره.
  • مساعدو مستوى النظام يُعرضون ولا يُحرَّرون. فهم يعيشون في تهيئة لا يكتب فيها إلا مسؤول النظام.
  • لا يستطيع Gitcito سرد ما يحمله مساعد. فلا واجهة بيانات اعتماد تكشف ذلك من دون تسليم الأسرار، ولذلك يبلّغ الحوار عن التهيئة ويمحو عند الطلب، ولا شيء غير ذلك.
  • الرمز الذي أعطيته لـ Gitcito منفصل. إلغاء أحدهما لا يمسّ الآخر؛ انظر الأمان لجانب سلسلة المفاتيح.

انظر أيضًا: الأمان · مفاتيح SSH · المزامنة

حسّن هذه الترجمة على GitHub