انتقل إلى المحتوى

مفاتيح SSH خطوة بخطوة

لإنشاء SSH key نفّذ في الطرفية الأمر ssh-keygen -t ed25519 -C "بريدك"، واضغط Enter لقبول المسار الافتراضي. ينتج ملفان: private key يبقى على جهازك ولا يغادره، و public key تنسخه إلى SettingsSSH / GPG Keys في ليڤانت غيت (LevantGit). بعدها تنفّذ push و pull على الـ repositories دون كتابة كلمة المرور في كل مرة.

لماذا SSH؟

عندما يتصل جهازك بليڤانت غيت لينفّذ push أو pull، يحتاج أن يثبت هويتك. هناك طريقتان:

  • HTTPS: تستخدم عنوانًا مثل https://levantgit.com/user/repo.git. تحتاج اسم المستخدم وكلمة المرور في كل عملية، وإن فعّلت الـ 2FA فلن تقبل كلمة المرور أصلًا، بل تحتاج access token تنشئه من SettingsApplications (https://levantgit.com/user/settings/applications) وتستخدمه مكان كلمة المرور. طريقة صالحة، لكنها أكثر تعبًا مع الوقت.
  • SSH: تستخدم عنوانًا مثل [email protected]:user/repo.git. تنشئ SSH key مرة واحدة، وهو في الحقيقة ملفان متلازمان: private key يبقى على جهازك ولا يغادره أبدًا، وpublic key تضعه في حسابك على الموقع. بعدها يتعرّف الموقع على جهازك تلقائيًا.

هذا المسار يستخدم SSH، وهو ما ننصح به.

ملاحظة

ليڤانت غيت يستقبل اتصالات SSH على المنفذ المعتاد 22. إن كانت شبكتك (في شركة أو جامعة) تحجب هذا المنفذ فاستخدم HTTPS مع access token.

الخطوة ١: أنشئ المفتاح

افتح الطرفية واكتب الأمر التالي، مستبدلًا البريد ببريدك في ليڤانت غيت:

افتح Git Bash (أو PowerShell؛ الأمر نفسه يعمل في كليهما):

ssh-keygen -t ed25519 -C "[email protected]"

افتح الطرفية (Terminal):

ssh-keygen -t ed25519 -C "[email protected]"
ssh-keygen -t ed25519 -C "[email protected]"

سيسألك الأمر سؤالين:

  1. Enter file in which to save the key: اضغط Enter لقبول المسار الافتراضي.
  2. Enter passphrase: عبارة مرور تحمي الـ private key لو سُرق جهازك. اكتب واحدة (لن تظهر الحروف وأنت تكتب) أو اضغط Enter لتركها فارغة. العبارة أكثر أمانًا، ولن تُطلب منك في كل مرة إن استخدمت الـ ssh-agent (الخطوة الاختيارية أدناه).

ed25519 هو نوع المفتاح، وهو الحديث والمنصوح به. و-C مجرد تعليق يساعدك على تمييز المفتاح لاحقًا.

الخطوة ٢: أين حُفظ المفتاح؟

أنشأ الأمر ملفين داخل مجلد .ssh في مجلد المستخدم:

الملف ما هو ماذا تفعل به
id_ed25519 الـ private key لا تشاركه مع أحد ولا ترفعه إلى أي مكان
id_ed25519.pub الـ public key هذا ما تنسخه إلى ليڤانت غيت

المسار الكامل:

  • ويندوز: C:\Users\اسمك\.ssh\ (في Git Bash يظهر كـ ~/.ssh/)
  • ماك: /Users/اسمك/.ssh/
  • لينكس: /home/اسمك/.ssh/

الخطوة ٣: انسخ الـ public key

في Git Bash:

cat ~/.ssh/id_ed25519.pub | clip

أو في PowerShell:

Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard
pbcopy < ~/.ssh/id_ed25519.pub

إن كان xclip مثبّتًا:

xclip -selection clipboard < ~/.ssh/id_ed25519.pub

وإلا فاعرضه وانسخه يدويًا:

cat ~/.ssh/id_ed25519.pub

الـ public key سطر واحد يبدأ بـ ssh-ed25519 وينتهي ببريدك. انسخه كاملًا.

الخطوة ٤: أضف المفتاح إلى حسابك

  1. سجّل الدخول إلى ليڤانت غيت، اضغط صورتك الرمزية ← SettingsSSH / GPG Keys، أو افتح https://levantgit.com/user/settings/keys مباشرة.
  2. اضغط Add Key في قسم Manage SSH Keys.
  3. Key Name: اكتب شيئًا يذكّرك بالجهاز، مثل laptop-2026.
  4. Content: الصق الـ public key.
  5. اضغط Add Key.

نصيحة

لكل جهاز SSH key خاص به. لا تنسخ الـ private key من جهاز إلى آخر؛ أنشئ مفتاحًا جديدًا على الجهاز الثاني وأضف الـ public key الخاص به أيضًا. عند بيع جهاز أو فقدانه احذف مفتاحه من هذه الصفحة.

الخطوة ٥: اختبر الاتصال

في المرة الأولى سترى شيئًا مثل:

The authenticity of host 'levantgit.com (...)' can't be established.
ED25519 key fingerprint is SHA256:....
Are you sure you want to continue connecting (yes/no/[fingerprint])?

هذا طبيعي: جهازك لم يتصل بهذا الخادم من قبل ويسألك إن كنت تثق به. اكتب yes واضغط Enter. يُحفظ الخادم في ملف ~/.ssh/known_hosts ولن يُسأل مرة أخرى.

إن نجح كل شيء تظهر رسالة ترحيب:

Hi there, username! You've successfully authenticated with the key named laptop-2026, ...

لا تقلق إن أضافت but Gitea does not provide shell access؛ هذا متوقع، فـ SSH هنا للـ Git فقط.

حل المشكلات

Permission denied (publickey)

الخادم لم يتعرّف على مفتاحك. تأكد أن:

  • الـ public key أُضيف في الموقع كاملًا دون سطر ناقص أو مسافة زائدة.
  • ملف الـ private key موجود في ~/.ssh/ باسمه الافتراضي. إن اخترت اسمًا آخر عند الإنشاء فأخبر SSH به: ssh -i ~/.ssh/اسم-الملف -T [email protected].
  • أنت تستخدم git@ وليس اسم مستخدمك قبل levantgit.com.

يُطلب منك كلمة مرور عند كل push

غالبًا الـ repository مضبوط على عنوان HTTPS لا SSH. افحصه بـ git remote -v؛ إن بدأ عنوان الـ remote بـ https:// فغيّره:

git remote set-url origin [email protected]:username/repo.git

تُسأل عن عبارة المرور في كل أمر

شغّل الـ ssh-agent مرة واحدة وأضف المفتاح إليه فيحفظ العبارة طوال الجلسة:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

على ماك أضف --apple-use-keychain بعد ssh-add ليتذكّرها دائمًا. على ويندوز يمكن تشغيل خدمة OpenSSH Authentication Agent من «الخدمات (Services)» ليعمل ssh-add بعد إعادة التشغيل.

Could not resolve hostname

مشكلة اتصال أو خطأ إملائي في levantgit.com. تأكد من الإنترنت وأعد المحاولة.

لمزيد من الأخطاء الشائعة ارجع إلى الأخطاء الشائعة وحلولها.

أسئلة شائعة

كيف أنشئ مفتاح SSH؟

افتح الطرفية — أو Git Bash على ويندوز — ونفّذ ssh-keygen -t ed25519 -C "[email protected]". اضغط Enter لقبول المسار الافتراضي، واكتب عبارة مرور إن أردت حماية إضافية. ينتج ملفان داخل مجلد .ssh: المفتاح الخاص، والمفتاح العام الذي ينتهي اسمه بـ .pub.

أين يُحفظ مفتاح SSH على جهازي؟

داخل مجلد .ssh في مجلد المستخدم: C:\Users\اسمك\.ssh على ويندوز، و/Users/اسمك/.ssh على ماك، و/home/اسمك/.ssh على لينكس. الملف id_ed25519 هو الـ private key ولا يغادر جهازك أبدًا، وid_ed25519.pub هو الـ public key الذي تنسخه إلى الموقع. والمجلد مخفي، فاعرض محتواه بأمر ls -a ~/.ssh.

ما الفرق بين SSH و HTTPS؟

HTTPS يطلب اسم المستخدم وكلمة المرور — أو access token إن كان الـ 2FA مفعّلًا — في كل عملية، بينما SSH يتعرّف على جهازك تلقائيًا بعد إضافة الـ public key مرة واحدة. SSH أريح على المدى الطويل، و HTTPS أنسب إن كانت شبكتك تحجب المنفذ 22.

لماذا تظهر رسالة Permission denied (publickey)؟

لأن الخادم لم يتعرّف على مفتاحك. تأكد أن الـ public key أُضيف كاملًا في SettingsSSH / GPG Keys، وأن الـ private key في مجلد .ssh باسمه الافتراضي، وأنك تستخدم [email protected] لا اسم مستخدمك. اختبر الاتصال بأمر ssh -T [email protected].

ماذا بعد؟