المقدمة
SSH أو الصَّدَفَة الآمِنَة هو بروتوكول مُشَفَّر يُستخدم لإدارة والتواصل مع الخوادم. عند العمل مع خادم Debian ، فمن المحتمل أن تقضي معظم وقتك في جلسة سطر الأوامر متصلًا بخادمك عبر SSH.
في هذا الدليل، سنركز على إعداد مفاتيح SSH لتثبيت Debian 11 الأصلي. توفر مفاتيح SSH طريقة سهلة وآمنة لتسجيل الدخول إلى خادمك ويُنصَح باستخدامها لجميع المستخدمين.
الخطوة 1 — إنشاء زوج مفتاح RSA
الخطوة الأولى هي إنشاء زوج مفتاح على جهاز العميل (عادةً جهاز الكمبيوتر الخاص بك):
بشكل افتراضي ، سيقوم ssh-keygen
بإنشاء زوج مفتاح RSA بطول 3072 بت ، وهو كافٍ بما فيه الكفاية لمعظم الحالات الاستخدامية (يمكنك اختياريًا تمرير العلم -b 4096
لإنشاء مفتاح بطول 4096 بت أكبر).
بعد إدخال الأمر ، يجب أن ترى الناتج التالي:
OutputGenerating 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)?
تحذير: إذا اخترت استبدال المفتاح على القرص، فلن تتمكن بعد الآن من المصادقة باستخدام المفتاح السابق. كن حذرًا جدًا عند اختيار نعم، حيث أن هذه العملية تدمرية ولا يمكن عكسها.
ثم يجب عليك رؤية الرسالة التالية:
OutputEnter passphrase (empty for no passphrase):
هنا يمكنك اختيار إدخال عبارة مرور آمنة، والتي يُنصح بشدة بها. تضيف عبارة المرور طبقة إضافية من الأمان لمنع المستخدمين غير المصرح بهم من تسجيل الدخول. لمعرفة المزيد حول الأمان، استشر دليلنا التعليمي حول كيفية تكوين المصادقة على أساس مفتاح SSH على خادم Linux.
ثم يجب عليك رؤية الإخراج التالي:
OutputYour 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 العام إليه.
الصيغة هي:
قد ترى الرسالة التالية:
OutputThe 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
.
يجب أن ترى الناتج التالي:
OutputNumber 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
ضمن هذا الدليل. سنستخدم رمز تحويل النص >>
لإضافة المحتوى بدلاً من استبداله. سيتيح لنا ذلك إضافة المفاتيح دون تدمير المفاتيح التي تمت إضافتها سابقًا.
الأمر الكامل يبدو مثل هذا:
قد ترى الرسالة التالية:
OutputThe 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
للمتابعة.
بعد ذلك، يجب أن يُطلب منك إدخال كلمة مرور حساب المستخدم عن بعد:
Outputusername@203.0.113.1's password:
بمجرد إدخالك لكلمة المرور، سيتم نسخ محتوى مفتاح id_rsa.pub
إلى نهاية ملف authorized_keys
لحساب المستخدم عن بعد. استمر في الخطوة 3 إذا نجحت هذه العملية.
نسخ المفتاح العام يدويًا
إذا لم يكن لديك الوصول إلى الخادم عبر SSH بناءً على كلمة مرور، سيتعين عليك إكمال العملية أعلاه يدويًا.
سنقوم بإلصاق محتوى ملف id_rsa.pub
بشكل يدوي إلى ملف ~/.ssh/authorized_keys
على جهازك البعيد.
لعرض محتوى مفتاحك id_rsa.pub
، اكتب هذا في جهاز الكمبيوتر المحلي الخاص بك:
سترى محتوى المفتاح، والذي يجب أن يبدو مشابهًا لهذا:
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDgkLJ8d2gGEJCN7xdyVaDqk8qgeZqQ0MlfoPK3TzWI5dkG0WiZ16jrkiW/h6lhO9K1w89VDMnmNN9ULOWHrZMNs//Qyv/oN+FLIgK2CkKXRxTmbh/ZGnqOm3Zo2eU+QAmjb8hSsstQ3DiuGu8tbiWmsa3k3jKbWNWpXqY3Q88t+bM1DZrHwYzaIZ1BSA1ghqHCvIZqeP9IUL2l2DUfSCT9LXJEgMQhgjakJnzEGPgd5VHMR32rVrbIbbDzlyyoZ7SpCe5y0vYvbV2JKWI/8SEOmwehEHJ9RBZmciwc+1sdEcAJVMDujb9p5rX4hyvFpG0KGhZesB+/s7PdOa8zlIg4TZhXUHl4t1jpPC83Y9KEwS/Ni4dhaxlnr3T6l5hUX2cD+eWl1vVpogBqKNGBMrVR4dWs3Z4BVUf9exqTRRYOfgo0UckULqW5pmLW07JUuGo1kpFAxpDBPFWoPsg08CGRdEUS7ScRnMK1KdcH54kUZr0O88SZOsv9Zily/A5GyNM= demo@test
قم بالوصول إلى الخادم البعيد باستخدام الطريقة التي تتوفر لديك.
بمجرد الوصول إلى حسابك على الخادم البعيد، يجب التأكد من وجود دليل ~/.ssh
. سيقوم هذا الأمر بإنشاء الدليل إذا لزم الأمر، أو لن يفعل شيئًا إذا كان موجودًا بالفعل:
الآن يمكنك إنشاء أو تعديل ملف authorized_keys
داخل هذا الدليل. يمكنك إضافة محتويات ملف id_rsa.pub
الخاص بك إلى نهاية ملف authorized_keys
، وإنشاؤه إذا لزم الأمر، باستخدام هذا الأمر:
في الأمر أعلاه، قم بتعويض public_key_string
بالإخراج من الأمر cat ~/.ssh/id_rsa.pub
الذي قمت بتنفيذه على النظام المحلي الخاص بك. يجب أن يبدأ بـ ssh-rsa AAAA...
.
وأخيرًا، سنتأكد من أن الدليل ~/.ssh
وملف authorized_keys
لديهما الصلاحيات المناسبة المعينة:
هذا يقوم بإزالة الصلاحيات “المجموعة” و “الآخرين” بشكل متكرر للدليل ~/.ssh/
.
إذا كنت تستخدم حساب root
لإعداد المفاتيح لحساب مستخدم، فمن المهم أيضًا أن ينتمي الدليل ~/.ssh
إلى المستخدم وليس إلى root
:
في هذا البرنامج التعليمي اسم المستخدم لدينا هو sammy ولكن يجب عليك استبدال اسم المستخدم المناسب في الأمر أعلاه.
يمكنك الآن محاولة المصادقة دون كلمة مرور باستخدام مفتاح SSH مع خادم Debian الخاص بك.
الخطوة 3 — المصادقة على خادم Debian باستخدام مفاتيح SSH
إذا كنت قد أكملت بنجاح أحد الإجراءات أعلاه، يجب أن تكون قادرًا على تسجيل الدخول إلى المضيف البعيد بدون كلمة مرور الحساب البعيد.
العملية العامة هي نفسها:
إذا كانت هذه المرة الأولى التي تقوم فيها بالاتصال بهذا المضيف (إذا كنت قد استخدمت آخر الطرق أعلاه)، قد ترى شيئًا مثل هذا:
OutputThe 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:
داخل الملف، ابحث عن توجيه يسمى PasswordAuthentication
. قد يكون هذا الموجود معلقًا. قم بفك التعليق عن السطر وقم بتعيين القيمة على “no”. سيؤدي هذا إلى تعطيل القدرة على تسجيل الدخول عبر SSH باستخدام كلمات المرور:
...
PasswordAuthentication no
...
احفظ وأغلق الملف عند الانتهاء بالضغط على CTRL
+ X
، ثم Y
لتأكيد حفظ الملف، وأخيرًا ENTER
للخروج من نانو. لتنفيذ هذه التغييرات فعليًا، نحتاج إلى إعادة تشغيل خدمة sshd
:
كإجراء احترازي، افتح نافذة تحرير جديدة واختبر أن خدمة SSH تعمل بشكل صحيح قبل إغلاق هذه الجلسة:
بمجرد التحقق من خدمة SSH الخاصة بك، يمكنك بأمان إغلاق جميع الجلسات الحالية على الخادم.
خدمة SSH على خادم Debian الخاص بك الآن تستجيب فقط لمفاتيح SSH. تم تعطيل المصادقة المستندة إلى كلمة المرور بنجاح.
الختام
يجب أن تكون قد قمت الآن بتكوين المصادقة باستخدام مفتاح SSH على خادمك، مما يتيح لك تسجيل الدخول دون تقديم كلمة مرور للحساب.
إذا كنت ترغب في معرفة المزيد حول العمل مع SSH، فتحقق من دليل أساسيات SSH لدينا.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-debian-11