كيفية إعداد مفاتيح SSH على Debian 11

المقدمة

SSH أو الصَّدَفَة الآمِنَة هو بروتوكول مُشَفَّر يُستخدم لإدارة والتواصل مع الخوادم. عند العمل مع خادم Debian ، فمن المحتمل أن تقضي معظم وقتك في جلسة سطر الأوامر متصلًا بخادمك عبر SSH.

في هذا الدليل، سنركز على إعداد مفاتيح SSH لتثبيت Debian 11 الأصلي. توفر مفاتيح SSH طريقة سهلة وآمنة لتسجيل الدخول إلى خادمك ويُنصَح باستخدامها لجميع المستخدمين.

الخطوة 1 — إنشاء زوج مفتاح RSA

الخطوة الأولى هي إنشاء زوج مفتاح على جهاز العميل (عادةً جهاز الكمبيوتر الخاص بك):

  1. ssh-keygen

بشكل افتراضي ، سيقوم ssh-keygen بإنشاء زوج مفتاح RSA بطول 3072 بت ، وهو كافٍ بما فيه الكفاية لمعظم الحالات الاستخدامية (يمكنك اختياريًا تمرير العلم -b 4096 لإنشاء مفتاح بطول 4096 بت أكبر).

بعد إدخال الأمر ، يجب أن ترى الناتج التالي:

Output
Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):

اضغط على مفتاح Enter لحفظ زوج المفاتيح في المجلد الفرعي .ssh/ في دليل المستخدم الخاص بك ، أو حدد مسارًا بديلًا.

إذا كنت قد أنشأت مسبقًا زوج مفاتيح SSH، قد ترى الرسالة التالية:

Output
/home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?

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

ثم يجب عليك رؤية الرسالة التالية:

Output
Enter passphrase (empty for no passphrase):

هنا يمكنك اختيار إدخال عبارة مرور آمنة، والتي يُنصح بشدة بها. تضيف عبارة المرور طبقة إضافية من الأمان لمنع المستخدمين غير المصرح بهم من تسجيل الدخول. لمعرفة المزيد حول الأمان، استشر دليلنا التعليمي حول كيفية تكوين المصادقة على أساس مفتاح SSH على خادم Linux.

ثم يجب عليك رؤية الإخراج التالي:

Output
Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: SHA256:5E2BtTN9FHPBNoRXAB/EdjtHNYOHzTBzG5qUv7S3hyM root@debian-suricata The key's randomart image is: +---[RSA 3072]----+ | oo .O^XB| | . +.BO%B| | . = .+B+o| | o o o . =.| | S . . =| | o.| | .o| | E o..| | . ..| +----[SHA256]-----+

الآن لديك مفتاح عام ومفتاح خاص يمكنك استخدامهما للمصادقة. الخطوة التالية هي وضع المفتاح العام على الخادم الخاص بك بحيث يمكنك استخدام المصادقة على أساس مفتاح SSH لتسجيل الدخول.

الخطوة 2 — نسخ المفتاح العام إلى خادم Debian

أسرع طريقة لنسخ مفتاحك العام إلى مضيف Debian هي باستخدام أداة تُسمى ssh-copy-id. نظرًا لبساطته، يُنصح بشدة باستخدام هذه الطريقة إذا كانت متاحة. إذا لم يكن لديك ssh-copy-id متاحة على جهاز العميل الخاص بك، يمكنك استخدام إحدى الطرق البديلة المقدمة في هذا القسم (نسخ عبر SSH على أساس كلمة المرور، أو نسخ المفتاح يدويًا).

نسخ المفتاح العام باستخدام ssh-copy-id

أداة ssh-copy-id متوفرة افتراضيًا في العديد من أنظمة التشغيل، لذا قد تكون متاحة على نظامك المحلي. لكي تعمل هذه الطريقة، يجب أن يكون لديك بالفعل وصول SSH بناء على كلمة مرور إلى خادمك.

لاستخدام الأداة، ما عليك سوى تحديد الخادم البعيد الذي ترغب في الاتصال به وحساب المستخدم الذي لديك وصول SSH بناء على كلمة مرور إليه. هذا هو الحساب الذي سيتم نسخ مفتاح SSH العام إليه.

الصيغة هي:

  1. ssh-copy-id username@remote_host

قد ترى الرسالة التالية:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

هذا يعني أن جهاز الكمبيوتر المحلي الخاص بك لا يعترف بالخادم البعيد. سيحدث هذا أول مرة تتصل فيها بمضيف جديد. اكتب “نعم” واضغط على ENTER للمتابعة.

بعد ذلك، ستقوم الأداة بفحص حسابك المحلي للمفتاح id_rsa.pub الذي أنشأناه في وقت سابق. عندما يجد المفتاح، سيطلب منك كلمة مرور حساب المستخدم البعيد:

Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@203.0.113.1's password:

اكتب كلمة المرور (لن يتم عرض كتابتك لأسباب أمان) واضغط على ENTER. ستقوم الأداة بالاتصال بالحساب على الخادم البعيد باستخدام كلمة المرور التي قدمتها. بعد ذلك، ستقوم بنسخ محتويات مفتاحك ~/.ssh/id_rsa.pub إلى ملف في دليل ~/.ssh الخاص بحساب البعيد يسمى authorized_keys.

يجب أن ترى الناتج التالي:

Output
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

في هذه النقطة، تم رفع مفتاح id_rsa.pub الخاص بك إلى الحساب البعيد. يمكنك المتابعة إلى الخطوة 3.

نسخ المفتاح العمومي باستخدام SSH

إذا لم يكن لديك الأمر ssh-copy-id متوفرًا، ولكن لديك الوصول إلى SSH عبر كلمة مرور إلى حساب على خادمك، يمكنك رفع المفاتيح الخاصة بك باستخدام طريقة SSH التقليدية.

يمكننا القيام بذلك باستخدام الأمر cat لقراءة محتويات مفتاح SSH العمومي على جهاز الكمبيوتر المحلي الخاص بنا وتوجيه ذلك من خلال اتصال SSH إلى الخادم البعيد.

من جهة أخرى، يمكننا التأكد من أن الدليل ~/.ssh موجود ولديه الصلاحيات الصحيحة تحت الحساب الذي نستخدمه.

يمكننا بعد ذلك إخراج المحتوى الذي قمنا بتوجيهه إلى ملف يسمى authorized_keys ضمن هذا الدليل. سنستخدم رمز تحويل النص >> لإضافة المحتوى بدلاً من استبداله. سيتيح لنا ذلك إضافة المفاتيح دون تدمير المفاتيح التي تمت إضافتها سابقًا.

الأمر الكامل يبدو مثل هذا:

  1. cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

قد ترى الرسالة التالية:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

هذا يعني أن جهاز الكمبيوتر المحلي الخاص بك لا يعترف بالمضيف البعيد. سيحدث هذا في المرة الأولى التي تقوم فيها بالاتصال بمضيف جديد. اكتب “نعم” واضغط ENTER للمتابعة.

بعد ذلك، يجب أن يُطلب منك إدخال كلمة مرور حساب المستخدم عن بعد:

Output
username@203.0.113.1's password:

بمجرد إدخالك لكلمة المرور، سيتم نسخ محتوى مفتاح id_rsa.pub إلى نهاية ملف authorized_keys لحساب المستخدم عن بعد. استمر في الخطوة 3 إذا نجحت هذه العملية.

نسخ المفتاح العام يدويًا

إذا لم يكن لديك الوصول إلى الخادم عبر SSH بناءً على كلمة مرور، سيتعين عليك إكمال العملية أعلاه يدويًا.

سنقوم بإلصاق محتوى ملف id_rsa.pub بشكل يدوي إلى ملف ~/.ssh/authorized_keys على جهازك البعيد.

لعرض محتوى مفتاحك id_rsa.pub، اكتب هذا في جهاز الكمبيوتر المحلي الخاص بك:

  1. cat ~/.ssh/id_rsa.pub

سترى محتوى المفتاح، والذي يجب أن يبدو مشابهًا لهذا:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDgkLJ8d2gGEJCN7xdyVaDqk8qgeZqQ0MlfoPK3TzWI5dkG0WiZ16jrkiW/h6lhO9K1w89VDMnmNN9ULOWHrZMNs//Qyv/oN+FLIgK2CkKXRxTmbh/ZGnqOm3Zo2eU+QAmjb8hSsstQ3DiuGu8tbiWmsa3k3jKbWNWpXqY3Q88t+bM1DZrHwYzaIZ1BSA1ghqHCvIZqeP9IUL2l2DUfSCT9LXJEgMQhgjakJnzEGPgd5VHMR32rVrbIbbDzlyyoZ7SpCe5y0vYvbV2JKWI/8SEOmwehEHJ9RBZmciwc+1sdEcAJVMDujb9p5rX4hyvFpG0KGhZesB+/s7PdOa8zlIg4TZhXUHl4t1jpPC83Y9KEwS/Ni4dhaxlnr3T6l5hUX2cD+eWl1vVpogBqKNGBMrVR4dWs3Z4BVUf9exqTRRYOfgo0UckULqW5pmLW07JUuGo1kpFAxpDBPFWoPsg08CGRdEUS7ScRnMK1KdcH54kUZr0O88SZOsv9Zily/A5GyNM= demo@test

قم بالوصول إلى الخادم البعيد باستخدام الطريقة التي تتوفر لديك.

بمجرد الوصول إلى حسابك على الخادم البعيد، يجب التأكد من وجود دليل ~/.ssh. سيقوم هذا الأمر بإنشاء الدليل إذا لزم الأمر، أو لن يفعل شيئًا إذا كان موجودًا بالفعل:

  1. mkdir -p ~/.ssh

الآن يمكنك إنشاء أو تعديل ملف authorized_keys داخل هذا الدليل. يمكنك إضافة محتويات ملف id_rsa.pub الخاص بك إلى نهاية ملف authorized_keys، وإنشاؤه إذا لزم الأمر، باستخدام هذا الأمر:

  1. echo public_key_string >> ~/.ssh/authorized_keys

في الأمر أعلاه، قم بتعويض public_key_string بالإخراج من الأمر cat ~/.ssh/id_rsa.pub الذي قمت بتنفيذه على النظام المحلي الخاص بك. يجب أن يبدأ بـ ssh-rsa AAAA....

وأخيرًا، سنتأكد من أن الدليل ~/.ssh وملف authorized_keys لديهما الصلاحيات المناسبة المعينة:

  1. chmod -R go= ~/.ssh

هذا يقوم بإزالة الصلاحيات “المجموعة” و “الآخرين” بشكل متكرر للدليل ~/.ssh/.

إذا كنت تستخدم حساب root لإعداد المفاتيح لحساب مستخدم، فمن المهم أيضًا أن ينتمي الدليل ~/.ssh إلى المستخدم وليس إلى root:

  1. chown -R sammy:sammy ~/.ssh

في هذا البرنامج التعليمي اسم المستخدم لدينا هو sammy ولكن يجب عليك استبدال اسم المستخدم المناسب في الأمر أعلاه.

يمكنك الآن محاولة المصادقة دون كلمة مرور باستخدام مفتاح SSH مع خادم Debian الخاص بك.

الخطوة 3 — المصادقة على خادم Debian باستخدام مفاتيح SSH

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

العملية العامة هي نفسها:

  1. ssh username@remote_host

إذا كانت هذه المرة الأولى التي تقوم فيها بالاتصال بهذا المضيف (إذا كنت قد استخدمت آخر الطرق أعلاه)، قد ترى شيئًا مثل هذا:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

هذا يعني أن جهاز الكمبيوتر المحلي الخاص بك لا يتعرف على المضيف البعيد. اكتب “نعم” ثم اضغط على ENTER للمتابعة.

إذا لم تقم بتوفير عبارة مرور لمفتاحك الخاص، سيتم تسجيل دخولك مباشرة. إذا قمت بتوفير عبارة مرور للمفتاح الخاص عند إنشائه، سيتم طلبها الآن (يرجى ملاحظة أن ضغطات المفاتيح الخاصة بك لن تظهر في جلسة الطرفية لأسباب أمان). بعد المصادقة، يجب أن تفتح جلسة قشرة جديدة بالنسبة لك مع الحساب المكون على خادم Debian.

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

الخطوة 4 — تعطيل المصادقة بكلمة المرور على الخادم الخاص بك

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

قبل إكمال الخطوات في هذا القسم، تأكد من أنك قد قمت بتكوين مصادقة مستندة على مفتاح SSH لحساب الجذر على هذا الخادم، أو بشكل مفضل، أنك قد قمت بتكوين مصادقة مستندة على مفتاح SSH لحساب غير جذري على هذا الخادم مع امتيازات sudo. سيؤدي هذا الخطوة إلى قفل تسجيل الدخول عبر كلمة المرور، لذلك من الضروري التأكد من الحصول على وصول إداري.

بمجرد التحقق من أن حسابك عن بُعد يحتوي على امتيازات إدارية، قم بتسجيل الدخول إلى الخادم البعيد باستخدام مفاتيح SSH، إما كجذر أو باستخدام حساب يحتوي على امتيازات sudo. ثم، قم بفتح ملف تكوين سائق SSH:

  1. sudo nano /etc/ssh/sshd_config

داخل الملف، ابحث عن توجيه يسمى PasswordAuthentication. قد يكون هذا الموجود معلقًا. قم بفك التعليق عن السطر وقم بتعيين القيمة على “no”. سيؤدي هذا إلى تعطيل القدرة على تسجيل الدخول عبر SSH باستخدام كلمات المرور:

/etc/ssh/sshd_config
...
PasswordAuthentication no
...

احفظ وأغلق الملف عند الانتهاء بالضغط على CTRL + X، ثم Y لتأكيد حفظ الملف، وأخيرًا ENTER للخروج من نانو. لتنفيذ هذه التغييرات فعليًا، نحتاج إلى إعادة تشغيل خدمة sshd:

  1. sudo systemctl restart ssh

كإجراء احترازي، افتح نافذة تحرير جديدة واختبر أن خدمة SSH تعمل بشكل صحيح قبل إغلاق هذه الجلسة:

  1. ssh username@remote_host

بمجرد التحقق من خدمة SSH الخاصة بك، يمكنك بأمان إغلاق جميع الجلسات الحالية على الخادم.

خدمة SSH على خادم Debian الخاص بك الآن تستجيب فقط لمفاتيح SSH. تم تعطيل المصادقة المستندة إلى كلمة المرور بنجاح.

الختام

يجب أن تكون قد قمت الآن بتكوين المصادقة باستخدام مفتاح SSH على خادمك، مما يتيح لك تسجيل الدخول دون تقديم كلمة مرور للحساب.

إذا كنت ترغب في معرفة المزيد حول العمل مع SSH، فتحقق من دليل أساسيات SSH لدينا.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-debian-11