كيفية إنشاء مفاتيح SSH لـ GitHub
نشرت: 2022-02-05Git و GitHub أدوات أساسية لكل مطور. يتم استخدامها على نطاق واسع في كل أنواع مشاريع تطوير البرامج تقريبًا.
هناك خدمات استضافة Git أخرى مثل Gitlab و Bitbucket ، لكن GitHub هو الخيار الأكثر شيوعًا للمطورين. يمكنك حتى تعديل ملف التعريف الخاص بك لتبدو أكثر جاذبية لمسؤولي التوظيف.
يمكنك استخدام Git و GitHub لتنظيم مشاريعك ، والتعاون مع مطورين آخرين ، وبالطبع في Kinsta.
ولكن نظرًا لأن Git و GitHub هما أداتان مرتبطتان ولكنهما مختلفتان ، فأنت بحاجة إلى تحديث سير العمل الخاص بك مع كل منهما باستمرار.
نوصي باستخدام مفاتيح SSH لكل جهاز من أجهزتك. لذلك ، في هذا البرنامج التعليمي ، ستتعرف على ماهيتها ، وبعض مزاياها ، وكيفية إنشاء مفاتيح GitHub SSH وتكوينها.
هيا بنا نبدأ!
ما هي مفاتيح SSH؟
ببساطة ، مفاتيح SSH هي بيانات اعتماد مستخدمة لبروتوكول SSH (Secure Shell) لتمكين الوصول الآمن إلى أجهزة الكمبيوتر البعيدة عبر الإنترنت. عادة ، تحدث هذه المصادقة في بيئة سطر الأوامر.
يعتمد هذا البروتوكول على بنية خادم العميل ، مما يعني أنك كمستخدم (أو "عميل") بحاجة إلى استخدام برنامج خاص ، يسمى عميل SSH ، لتسجيل الدخول إلى خادم بعيد وتنفيذ الأوامر. هذا هو ما تفعله أساسًا عند المصادقة عبر محطة طرفية لـ GitHub.

لكن SSH لا يستخدم فقط في GitHub. يتم استخدامه على نطاق واسع من قبل منصات أخرى مثل Kinsta و Google Cloud و Amazon Web services لإنشاء قناة آمنة للوصول إلى خدماتهم.
الآن ، بالتوجه إلى كيفية عمل مفاتيح SSH حقًا ، تحتاج إلى فهم الاختلافات بين المفاتيح العامة والخاصة.
المفاتيح العامة مقابل المفاتيح الخاصة
هيا لنبدأ مع الأساسيات.
يستخدم بروتوكول SSH تقنية تشفير تسمى التشفير غير المتماثل . قد يبدو هذا المصطلح معقدًا وغريبًا ، لكن لا شيء أبعد عن الحقيقة.
في الأساس ، التشفير غير المتماثل هو نظام يستخدم زوجًا من المفاتيح ، وهما المفاتيح العامة والخاصة .
كما قد تتخيل ، يمكن مشاركة المفتاح العام مع أي شخص. والغرض الرئيسي منه هو تشفير البيانات وتحويل الرسالة إلى رمز سري أو نص مشفر. عادةً ما يتم إرسال هذا المفتاح إلى أنظمة أخرى - على سبيل المثال ، الخوادم - لتشفير البيانات قبل إرسالها عبر الإنترنت.
من ناحية أخرى ، المفتاح الخاص هو المفتاح الذي يجب أن تحتفظ به لنفسك. يتم استخدامه لفك تشفير البيانات المشفرة باستخدام المفتاح العام الخاص بك. بدونها ، من المستحيل فك تشفير معلوماتك.
تتيح هذه الطريقة لك وللخادم الاحتفاظ بقناة اتصال آمنة لنقل المعلومات.
إليك ما يحدث في الخلفية عند الاتصال بخادم عبر SSH:
- يرسل العميل المفتاح العام إلى الخادم.
- يطلب الخادم من العميل توقيع رسالة عشوائية مشفرة بالمفتاح العام باستخدام المفتاح الخاص.
- يقوم العميل بتوقيع الرسالة وإعادة توجيه النتيجة إلى الخادم.
- يتم إنشاء اتصال آمن بين العميل والخادم.
من المهم الاحتفاظ بمفاتيحك الخاصة بأمان ومشاركتها مع أي شخص تحت أي ظرف من الظروف. إنها حرفياً المفتاح لجميع المعلومات المرسلة إليك.
استخدام مفاتيح SSH مع GitHub
منذ 13 أغسطس 2021 ، لم يعد Github يقبل مصادقة كلمة المرور للوصول إلى سطر الأوامر. هذا يعني أنك الآن بحاجة إلى المصادقة عبر رمز وصول شخصي أو استخدام مفتاح SSH (أكثر ملاءمة قليلاً).
إليك ما يحدث عندما تحاول المصادقة باستخدام كلمة مرور GitHub عبر HTTP في محطة طرفية:
Username for 'https://github.com': yourusername Password for 'https://[email protected]': remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/yourusername/repository.git/'
يحتاج GitHub إلى مفتاحك العام للسماح لك بتعديل أي من المستودعات الخاصة بك عبر SSH.
دعونا نرى كيف يمكنك إنشاء مفاتيح SSH محليًا.
كيفية إنشاء مفاتيح SSH محليًا
الآن بعد أن فهمت قليلاً عن بروتوكول SSH والاختلافات بين المفاتيح العامة والخاصة ، حان الوقت لإعداد قناة SSH الآمنة بين جهازك ومستودعات GitHub الخاصة بك.
قبل المضي قدمًا ، يجب أن يكون لديك بالفعل حساب GitHub ، وموجه أوامر طرفية / مع تثبيت Git في نظامك. إذا كنت تقوم بتشغيل Windows ، فتأكد من تثبيت Git bash ، الذي يحتوي على جميع الأدوات التي ستحتاج إلى اتباعها مع هذا البرنامج التعليمي المدمج.
عميل OpenSSH هو أشهر البرامج مفتوحة المصدر المستخدمة للاتصال عبر SSH. لا داعي للقلق بشأن نظام التشغيل الخاص بك لأنه مثبت بشكل افتراضي على Linux و macOS و Windows 10.
تحتاج إلى تشغيل موجه الأوامر على Windows أو محطة على الأنظمة المستندة إلى Unix لإنشاء مفاتيح SSH محلية. عادة ، يمكنك القيام بذلك من خلال البحث عن "Terminal" أو "cmd" أو "بوويرشيل" في لوحة التطبيق الخاصة بك ، ثم النقر فوق الرمز الذي يظهر.

بعد القيام بذلك ، يجب أن يكون لديك نافذة مشابهة للصورة التالية.

قم بتشغيل الأمر التالي لإنشاء زوج مفاتيح SSH محلي:
ssh-keygen -t ed25519 -C "[email protected]"
حان الوقت لإخبارك بسر: لا أحد يستطيع حقًا أن يتذكر هذا الأمر! يتعين على معظم المطورين استخدام Google في كل مرة للأسباب التالية:
- إنه أمر طويل حقًا ، بأرقام عشوائية يمكن نسيانها.
- نادرًا ما نستخدمه ، لذلك لا يستحق تكريسه للذاكرة معظم الوقت.
ومع ذلك ، من المهم فهم كل أمر نقدمه في محطاتنا ، لذلك دعونا نرى ما يعنيه كل جزء من هذا.
- ssh-keygen: أداة سطر الأوامر المستخدمة لإنشاء زوج جديد من مفاتيح SSH. يمكنك رؤية أعلامها بمساعدة
ssh-keygen help
- -t ed25519: تُستخدم العلامة
-t
للإشارة إلى الخوارزمية المستخدمة لإنشاء التوقيع الرقمي لزوج المفاتيح. إذا كان نظامك يدعم ذلك ، فإنed25519
هو أفضل خوارزمية يمكنك استخدامها لإنشاء أزواج مفاتيح SSH. - -C "البريد الإلكتروني": تُستخدم العلامة
-c
لتوفير تعليق مخصص في نهاية المفتاح العام ، والذي يكون عادةً البريد الإلكتروني أو تحديد منشئ زوج المفاتيح.
بعد كتابة الأمر في جهازك ، سيتعين عليك إدخال الملف الذي ترغب في حفظ المفاتيح فيه. بشكل افتراضي ، يكون موجودًا في دليلك الرئيسي ، في مجلد مخفي يسمى ".ssh" ، ولكن يمكنك تغييره إلى ما تريد.
ثم سيُطلب منك عبارة مرور لإضافتها إلى زوج المفاتيح. يضيف هذا طبقة إضافية من الأمان في حالة تعرض جهازك للخطر في أي وقت. إضافة عبارة مرور غير إلزامية ، ولكن يوصى بها دائمًا.

هذا ما تبدو عليه العملية برمتها:

كما ترى ، يُنشئ هذا الأمر ملفين في الدليل الذي حددته (عادةً ~ / .ssh ): المفتاح العام بامتداد .pub
، والمفتاح الخاص بدون ملحق.
سنوضح لك كيفية إضافة المفتاح العام إلى حساب GitHub الخاص بك لاحقًا.
أضف مفتاح SSH إلى وكيل ssh
يعمل برنامج وكيل ssh في الخلفية ، ويحمل مفاتيحك الخاصة وعبارات المرور بأمان ، ويبقيها جاهزة للاستخدام بواسطة ssh. إنها أداة رائعة توفر عليك كتابة عبارة مرورك في كل مرة تريد الاتصال بخادم.
لهذا السبب ، ستضيف مفتاحك الخاص الجديد إلى هذا الوكيل. إليك الطريقة:
- تأكد من تشغيل عامل ssh في الخلفية.
eval `ssh-agent` # Agent pid 334065
إذا تلقيت رسالة مشابهة لهذه إذا كان كل شيء على ما يرام. هذا يعني أن عامل ssh يعمل تحت معرف عملية معين (PID).
- أضف مفتاح SSH الخاص (المفتاح بدون ملحق) إلى وكيل ssh.
ssh-add ~/.ssh/kinsta_keys
استبدل kinsta_keys باسم مفتاح SSH الخاص بك. إذا كان هذا هو أول مفتاح قمت بإنشائه ، فيجب تسميته "id_algorithm_used" ، على سبيل المثال ، id_ed25519 .
أضف مفتاح SSH إلى حساب GitHub
الخطوة الأخيرة هي إضافة مفتاحك العام إلى حساب GitHub الخاص بك. ما عليك سوى اتباع التعليمات التالية:
- انسخ مفتاح SSH العمومي إلى الحافظة الخاصة بك. يمكنك فتح الملف في مكانه باستخدام محرر نصوص ونسخه ، أو استخدام الجهاز لإظهار محتوياته.
cat ~/.ssh/kinsta_keys.pub # ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl3dIeudNqd0DPMRD6OIh65tjkxFNOtwGcWB2gCgPhk [email protected]
- سجّل الدخول إلى GitHub] وانتقل إلى القسم الأيمن العلوي من الصفحة ، وانقر فوق صورة ملفك الشخصي ، وحدد الإعدادات.
إعدادات جيثب. - ثم ، في ملف تعريف الإعدادات الخاصة بك ، انقر فوق مفاتيح SSH و GPG .
مفاتيح SSH و GPG. - انقر على زر مفتاح SSH الجديد .
زر مفتاح SSH جديد. - امنح مفتاح SSH الجديد الخاص بك على GitHub عنوانًا - عادةً ما يكون الجهاز الذي ستستخدم هذا المفتاح منه. ثم الصق المفتاح في منطقة Key .
إضافة نموذج مفتاح SSH جديد. - أضف مفتاح SSH الخاص بك.
زر إضافة مفتاح SSH.
اختبر اتصال SSH بدفع الريبو
حان الوقت لاختبار كل ما فعلته حتى الآن. ستقوم بالتغيير والالتزام والدفع إلى أحد مستودعاتك الحالية باستخدام SSH لضمان إعداد اتصالك بشكل صحيح.
تتضمن جميع خطط استضافة Kinsta دعمًا على مدار الساعة طوال أيام الأسبوع من مطوري ومهندسين WordPress المخضرمين. تحدث مع نفس الفريق الذي يدعم عملاء Fortune 500 لدينا. تحقق من خططنا!
على سبيل المثال ، سنقوم بتعديل موقع HTML البسيط الذي أنشأناه في البرنامج التعليمي Git for Web Development.
أولاً ، سنحتاج إلى استنساخ المستودع في أجهزتنا المحلية. يمكننا الانتقال إلى صفحة الريبو على GitHub ونسخ عنوان SSH الذي توفره.

ثم قم باستنساخ الريبو باستخدام Terminal:
git clone [email protected]:DaniDiazTech/HTML-site.git
الآن ، دعنا نضيف علامة <h1>
بسيطة في ملف index.html :
... <div class="container my-2"> <h1 class="text-center">A new title!<h1> </div> <div class="container my-3"> ...

نحن لا نلمس أي JavaScript أو CSS لإبقاء هذا التعديل بسيطًا. ولكن إذا كنت ماهرًا في استخدام JavaScript ، فقد تجد مكانًا في Kinsta. تحقق من مهارات البرمجة التي تحتاجها لتكون جزءًا من فريق Kinsta.
بعد القيام بذلك ، قم بإجراء التغييرات:
git commit -am "Added a simple title"
وادفعهم إلى GitHub تمامًا كما تفعل عادةً.
git push
إذا سار كل شيء على ما يرام ، تهانينا! لقد قمت للتو بإعداد اتصال SSH بين جهازك و GitHub.
إدارة مفاتيح SSH متعددة لحسابات GitHub المختلفة
إذا كان لديك عدة حسابات على GitHub - دعنا نقول واحدًا لمشاريعك الشخصية والآخر لعملك - فمن الصعب استخدام SSH لكليهما. ستحتاج عادةً إلى أجهزة منفصلة للمصادقة على حسابات GitHub المختلفة.
ولكن يمكن حل ذلك بسهولة عن طريق تكوين ملف تكوين SSH.
دعنا ندخله.
- أنشئ زوج مفاتيح SSH آخر ، وأضفه إلى حساب GitHub الآخر. ضع في اعتبارك اسم الملف الذي تقوم بتعيين المفتاح الجديد إليه.
ssh-keygen -t ed25519 -C "[email protected]"
- قم بإنشاء ملف تكوين SSH. يخبر ملف التكوين برنامج ssh كيف يجب أن يتصرف. بشكل افتراضي ، قد لا يكون ملف التكوين موجودًا ، لذا قم بإنشائه داخل المجلد .ssh /:
touch ~/.ssh/config
- قم بتعديل ملف تكوين SSH. افتح ملف التكوين والصق الكود أدناه:
#Your day-to-day GitHub account Host github.com HostName github.com IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes # Work account Host github-work HostName github.com IdentityFile ~/.ssh/work_key_file IdentitiesOnly yes
الآن ، في كل مرة تحتاج فيها إلى المصادقة عبر SSH باستخدام حساب عملك أو حساب ثانوي ، يمكنك تعديل عنوان repo SSH قليلاً ، من:
[email protected]:workaccount/project.git
…ل:
[email protected]:workaccount/project.git
ملخص
تهانينا - لقد تعلمت معظم المعرفة العملية التي تحتاجها للاتصال بـ GitHub عبر SSH!
ناقش هذا البرنامج التعليمي الحاجة إلى بروتوكول SSH ، والاختلافات بين المفاتيح العامة والخاصة ، وكيفية إنشاء مفاتيح ، وإضافتها إلى GitHub ، وحتى إدارة مفاتيح SSH متعددة لحسابات GitHub المختلفة. ضع في اعتبارك أنه ما لم ترغب في فقدان الوصول إلى كل شيء ، يجب أن يظل مفتاحك الخاص على هذا النحو: خاص.
بهذه المعرفة ، أنت الآن جاهز لتطوير سير عمل لا تشوبه شائبة باستخدام Git و GitHub. استمر في الترميز!