المزامنة وتعدد المستودعات

مفاتيح SSH

الإعدادات ← الأمان ← مفاتيح SSH.

لماذا يوجد هذا القسم بجوار الرموز

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

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

مستودع بعيد مثل git@github.com:me/api.git لا يمسّ الرمز إطلاقًا. فـ git يسلّم الاتصال إلى ssh، الذي لم يسمع يومًا بشيء اسمه رمز وصول شخصي. وهذه ليست حالة هامشية — بل هي ما تحصل عليه حين يكون زميل قد أعدّ المستودع، أو حين يستخدم ملف .gitmodules عناوين git@، أو حين تعطّل شركتك الاستيثاق عبر HTTPS، أو حين يكون المضيف خادم GitLab مُدارًا ذاتيًا.

وحين يسوء ذلك، يقول ssh Permission denied (publickey) ولا يقول شيئًا غيرها. صحيحة تقنيًا، عديمة النفع كنصيحة.

كل مفتاح في ~/.ssh مع نوعه وبصمته وما إذا كان الوكيل يحتفظ به

ما يخبرك به القسم

كل مفتاح يُعثر عليه في ~/.ssh يعرض نوعه وحجمه وبصمته وتعليقه، إضافةً إلى الحقيقة الوحيدة التي تفسّر معظم حالات الفشل المفاجئ:

في الوكيل / ليس في الوكيل. فالمفتاح الذي لا يحتفظ به الوكيل لا يستطيع أن يستوثق من شيء، والوكيل ينسى محتوياته عند إعادة التشغيل ما لم يُطلَب من نظام التشغيل غير ذلك. و«كان يعمل بالأمس» هي هذه الحالة عادةً.

ما يمكنك فعله هنا

الإجراء ما يشغّله
نسخ المفتاح العام يضع سطر .pub في الحافظة، جاهزًا للصقه في أي مضيف
إضافة إلى الوكيل ssh-add (مع --apple-use-keychain على macOS، كي ينجو من إعادة التشغيل)
الرفع إلى GitHub POST /user/keys برمز هذا الملف الشخصي
توليد مفتاح ssh-keygen -t ed25519، معلَّقًا ببريدك في git
اختبار الاتصال ssh -T git@<host>، مترجَمًا إلى جملة مفهومة

اختبار الاتصال موجود لأن جواب ssh نفسه مضلِّل: فـ GitHub يستوثق منك بنجاح ثم يخرج برمز فشل، لأنه لا يقدّم صدفة. يقرأ Gitcito الرسالة لا رمز الخروج، ويعرض المخرج الخام تحتها كي تتحقق من قراءته.

الحدود، بصراحة

  • الرفع لـ GitHub فقط. أما GitLab وBitbucket وAzure DevOps فتحصل على نسخ المفتاح العام ورابط مباشر إلى صفحة إعدادات المفاتيح لديها. وتسجيل المفاتيح على الثلاثة الأخرى غير منفَّذ، والزر لا يتظاهر بغير ذلك.
  • التوليد لا يكتب فوق شيء أبدًا. فالاسم الموجود سلفًا في ~/.ssh يُرفض. والكتابة فوق مفتاح خاص في صمت تلغي وصولك إلى كل ما يثق به، ولا توجد نافذة تأكيد تجعل ذلك قابلًا للاسترجاع.
  • عبارات المرور لا يخزّنها Gitcito. تكتب واحدة عند التوليد أو عند الإضافة إلى الوكيل؛ فتُمرَّر إلى ssh-keygen/ssh-add ثم تُهمَل. أما إبقاؤها عبر إعادات التشغيل فمهمة سلسلة مفاتيح نظام التشغيل، عبر ssh-add.
  • لا تحرير لملف ~/.ssh/config، ولا أسماء مضيفين بديلة، ولا اختيار مفتاح لكل مستودع. فتلك تعيش في إعداد ssh لديك، وGitcito يترك ذلك الملف وشأنه.

ما لا يغادر جهازك أبدًا

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

انظر أيضًا: الأمان والأسرار · الاستضافة وطلبات السحب

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