يعد الحفاظ على بيانات تسجيل الدخول عبر SSH جزءًا مهمًا من بروتوكول الأمان الخاص بكل مسؤول. سنوضح لك هنا كيفية تقليل المفاتيح التي تحتفظ بها من خلال ربط تسجيل الدخول عبر SSH بمفتاح GPG الخاص بك.
البدء: تعرف على كيفية تمكين تسجيل الدخول بدون كلمة مرور باستخدام SSH لأول مرة.
لماذا تستخدم مفاتيح GPG لتسجيل الدخول إلى SSH
تتمثل إحدى مزايا استخدام مفاتيح GPG لتسجيل الدخول عبر SSH في سهولة التنقل بين المضيفين. يحتوي كل نظام تشغيل اليوم على أداة واجهة مستخدم رسومية أو سطر أوامر تتفاعل مع GPG. على سبيل المثال، يتوفر GNU Kleopatra لنظامي Linux وWindows، وتتوفر أداة GnuPG لنظامي Linux وmacOS.
من بين المزايا الأخرى لمفاتيح GPG أنه على عكس مفاتيح SSH، يمكنك استخدامها لمجموعة متنوعة من المهام المتعلقة بالأمان. بالإضافة إلى SSH، يمكنك إنشاء مفاتيح فرعية إضافية لتوقيع رسائل البريد الإلكتروني وتشفير الملفات. وبالتالي، تتيح لك مفاتيح GPG دمج جزء كبير من حياتك الرقمية في عدد قليل من البتات الآمنة سهلة الصيانة.
أخيرًا، لن يؤدي استخدام GPG عبر SSH إلى تغيير أي بنية أساسية موجودة على أجهزتك البعيدة. وذلك لأن GPG يحول مفتاح المصادقة الخاص به إلى تنسيق “متوافق مع SSH”. ونتيجة لذلك، يمكنك تصدير مفتاح GPG العام “المتوافق مع SSH” إلى خادم SSH واستخدامه على الفور لتسجيل الدخول.
في ملحوظة جانبية: تعرف على كيفية تأمين حساب Github الخاص بك باستخدام مفاتيح SSH.
تحضير مفتاح GPG الخاص بك لـ SSH
الخطوة الأولى لاستخدام مفاتيح GPG على SSH هي إنشاء مفتاح فرعي جديد. سيتيح لك القيام بذلك مشاركة تفاصيل مصادقة SSH الخاصة بك دون المساس بهوية GPG الأساسية الخاصة بك.
ابدأ بفتح موجه GPG للمفتاح الرئيسي الخاص بك:
gpg --expert --edit-key YOUR-KEY@EMAIL.ADDRESS
ملحوظة: يمكنك العثور على عنوان البريد الإلكتروني لمفتاحك الرئيسي عن طريق إدراج محتويات سلسلة المفاتيح الخاصة بك: gpg --list-keys
.
اكتب “addkey” في موجه GPG، ثم حدد “8”، ثم اضغط على يدخل.
اضبط قدرة المفتاح الفرعي الخاص بك على “=A” ثم اضغط يدخل.
اكتب “4096” في موجه حجم المفتاح، ثم اضغط على يدخل.
حدد مدة زمنية معقولة لصلاحية المفتاح الفرعي الخاص بك. في حالتي، سأكتب “1y” لجعل المفتاح الفرعي الجديد صالحًا لمدة عام واحد فقط.
قم بإنشاء مفتاح GPG الفرعي الجديد الخاص بك عن طريق كتابة “y”، ثم الضغط على يدخل على موجه التأكيد الخاص بالمعالج.
اكتب “إنهاء”، ثم اضغط على يدخل للخروج من موجه GPG.
تأكد من أن المفتاح الفرعي الجديد يعمل بشكل صحيح عن طريق سحب تفاصيل المفتاح الرئيسي الخاص بك:
gpg --list-keys YOUR-KEY@EMAIL.ADDRESS
تمكين دعم SSH في GPG
بمجرد تشغيل المفتاح الفرعي، يمكنك الآن تكوين خادم SSH الخاص بك لقبول طلبات gpg-agent الواردة. للقيام بذلك، أضف “enable-ssh-support” إلى ملف “gpg-agent.conf” الخاص بمستخدمك الحالي:
echo "enable-ssh-support" >> ~/.gnupg/gpg-agent.conf
افتح ملف “.bashrc” باستخدام محرر النصوص المفضل لديك:
قم بلصق أسطر التعليمات البرمجية التالية في نهاية ملف .bashrc الخاص بك:
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)br>gpgconf --launch gpg-agent
احفظ ملف bashrc الخاص بك، ثم اطبع keygrip الخاص بالمفتاح الفرعي الخاص بك:
gpg --list-keys --with-keygrip
انسخ مفتاحك الفرعي keygrip، ثم قم بإنشاء ملف “sshcontrol” ضمن دليل .gnupg:
قم بلصق مفتاح الهوية الخاص بك داخل الملف الجديد، ثم احفظه.
قم بتطبيق تكوين SSH وGPG الجديد عن طريق إعادة تحميل ملف bashrc على جلسة المحطة الطرفية الحالية:
اختبر ما إذا كان خادم SSH الخاص بك يعمل بشكل صحيح الآن من خلال إدراج مفتاح SSH العام الخاص به:
تصدير مفتاح GPG واختباره
في هذه المرحلة، أصبح لديك الآن برنامج SSH مرتبط بشكل صحيح بوكيل GPG الخاص بك. لاستخدامه، قم بإنشاء مفتاح تصدير SSH باستخدام الأمر التالي:
gpg --ssh-export-key YOUR-KEY@EMAIL.ADDRESS > ~/authorized_keys
قم بتعيين بتات أذونات مفتاح التصدير بحيث تكون قابلة للقراءة والكتابة من قبل المستخدم فقط:
chmod 600 ~/authorized_keys
أرسل ملف authorized_keys الجديد إلى الخادم البعيد الخاص بك باستخدام scp:
scp ~/authorized_keys YOUR-REMOTE.SERVER.DOMAIN:~/.ssh/authorized_keys
قم بتسجيل الدخول إلى الخادم البعيد الخاص بك، ثم أعد تشغيل برنامج SSH لتطبيق المفتاح الجديد الخاص بك:
sudo systemctl restart ssh.service
يضعط كنترول + دثم قم بتسجيل الدخول مرة أخرى إلى خادم SSH البعيد. سيؤدي هذا إلى ظهور مطالبة جديدة تطلب كلمة مرور مفتاح GPG الرئيسي الخاص بك.
إن ربط مفتاح GPG الخاص بك بخادم SSH الخاص بك وتصديره إلى خادم بعيد هي مجرد بعض الأشياء التي يمكنك القيام بها باستخدام SSH. اكتشف ما يمكنك القيام به باستخدام هذه القطعة الرائعة من البرامج باستخدام SSH مع أنابيب UNIX في Linux.