المقدمة
SSH أو الصدفة المؤمّنة هو بروتوكول مشفر يُستخدم لإدارة والتواصل مع الخوادم. عند العمل مع خادم Rocky Linux، من المحتمل أن تقضي معظم الوقت في جلسة تيرمينال متصلة بخادمك عبر SSH.
في هذا الدليل، سنركز على إعداد مفاتيح SSH لخادم Rocky Linux 9. توفر مفاتيح SSH طريقة مباشرة وآمنة لتسجيل الدخول إلى خادمك ويُوصى باستخدامها لجميع المستخدمين.
الخطوة 1 — إنشاء زوج المفاتيح RSA
الخطوة الأولى هي إنشاء زوج مفاتيح على جهاز العميل (عادة جهاز الكمبيوتر المحلي الخاص بك):
- ssh-keygen
بشكل افتراضي، سينشئ ssh-keygen
زوج مفاتيح RSA بحجم 2048 بت، وهو كافٍ من الناحية الأمنية لمعظم الحالات الاستخدامية (يمكنك اختياريًا تمرير العلم -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):
هنا يمكنك اختيار إدخال عبارة سرية آمنة اختيارية، والتي يُفضل استخدامها بشدة. تضيف العبارة السرية طبقة إضافية من الأمان لمفتاحك، لمنع المستخدمين غير المصرح بهم من تسجيل الدخول.
ثم يجب عليك رؤية الإخراج التالي:
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:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+
الآن لديك مفتاح عام ومفتاح خاص يمكنك استخدامهما للتحقق من الهوية. الخطوة التالية هي نقل المفتاح العام إلى الخادم الخاص بك بحيث يمكنك استخدام المصادقة بناءً على المفتاح الخاص.
الخطوة 2 — نسخ المفتاح العام إلى خادم Rocky Linux الخاص بك
أسرع طريقة لنسخ المفتاح العام إلى مضيف Rocky Linux هي استخدام أداة تسمى ssh-copy-id
. يُفضل بشدة استخدام هذه الطريقة إذا كانت متاحة. إذا لم يكن لديك ssh-copy-id
متاحًا على جهاز العميل الخاص بك، يمكنك استخدام إحدى الطرق البديلة اللتين تتبع (النسخ عبر SSH القائمة على كلمة المرور، أو نسخ المفتاح يدويًا).
نسخ المفتاح العام باستخدام ssh-copy-id
يتم تضمين أداة ssh-copy-id
افتراضيًا في العديد من أنظمة التشغيل، لذا قد تكون متوفرة على نظامك المحلي. لكي يعمل هذا الأسلوب، يجب أن تكون لديك بالفعل وصول SSH القائم على كلمة مرور إلى خادمك.
لاستخدام الأداة، ما عليك سوى تحديد الخادم البعيد الذي ترغب في الاتصال به وحساب المستخدم الذي لديك وصول SSH قائم على كلمة مرور إليه. هذا هو الحساب الذي سيتم نسخ مفتاح SSH العام إليه:
- ssh-copy-id username@remote_host
قد ترى الرسالة التالية:
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
هذا يعني أن جهاز الكمبيوتر المحلي لا يتعرف على الخادم البعيد. سيحدث هذا لأول مرة تقوم فيها بالاتصال بخادم جديد. اكتب 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
ضمن هذا الدليل. سنستخدم رمز التوجيه >>
لإلحاق المحتوى بدلاً من استبداله. سيتيح لنا ذلك إضافة المفاتيح دون تدمير أي مفاتيح تمت إضافتها مسبقًا.
يبدو الأمر الكامل مثل هذا:
- cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.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
هذا يعني أن جهاز الكمبيوتر المحلي الخاص بك لا يتعرف على الخادم البعيد. سيحدث هذا في المرة الأولى التي تتصل فيها بمضيف جديد. اكتب 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
، اكتب هذا في جهاز الكمبيوتر المحلي:
- cat ~/.ssh/id_rsa.pub
سترى محتوى المفتاح، الذي يجب أن يبدو شيئًا مشابهًا لهذا:
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host
قم بتسجيل الدخول إلى المضيف البعيد باستخدام أي طريقة تتوفر لديك.
بمجرد الوصول إلى حسابك على الخادم البعيد، يجب عليك التأكد من وجود مجلد ~/.ssh
. سيقوم هذا الأمر بإنشاء المجلد إذا لزم الأمر، أو لن يفعل شيئًا إذا كان موجودًا بالفعل:
- mkdir -p ~/.ssh
الآن، يمكنك إنشاء أو تعديل ملف authorized_keys
ضمن هذا الدليل. يمكنك إضافة محتويات ملف id_rsa.pub
الخاص بك إلى نهاية ملف authorized_keys
، وإنشاءه إذا لزم الأمر، باستخدام هذا الأمر:
- echo public_key_string >> ~/.ssh/authorized_keys
في الأمر أعلاه، قم بتعويض public_key_string
بالمخرجات من الأمر cat ~/.ssh/id_rsa.pub
الذي قمت بتنفيذه على نظامك المحلي. يجب أن تبدأ بـ ssh-rsa AAAA...
.
وأخيرًا، سنتأكد من أنّ الدليل ~/.ssh
وملف authorized_keys
لديهما الأذونات المناسبة المعينة:
- chmod -R go= ~/.ssh
هذا يقوم بإزالة كل الأذونات “المجموعة” و “الآخرين” تلقائيًا للدليل ~/.ssh/
.
إذا كنت تستخدم حساب root
لإعداد المفاتيح لحساب مستخدم، فمن المهم أيضًا أن ينتمي الدليل ~/.ssh
إلى المستخدم وليس إلى root
:
- chown -R sammy:sammy ~/.ssh
في هذا البرنامج التعليمي، يُدعى مستخدمنا sammy ولكن يجب عليك استبدال اسم المستخدم المناسب في الأمر أعلاه.
يمكننا الآن محاولة المصادقة القائمة على المفتاح مع خادم Rocky Linux الخاص بنا.
الخطوة 3 — تسجيل الدخول إلى خادم Rocky Linux الخاص بك باستخدام مفاتيح SSH
إذا نجحت في إكمال إحدى الإجراءات أعلاه، يجب أن تكون الآن قادرًا على تسجيل الدخول إلى الخادم البعيد بدون كلمة مرور الحساب البعيد.
العملية الأولية هي نفسها كما هو الحال في المصادقة بناءً على كلمة المرور:
- ssh username@remote_host
إذا كنت تقوم بالاتصال بالمضيف هذا للمرة الأولى (إذا كنت استخدمت الطريقة السابقة)، قد ترى شيئًا مشابهًا لهذا:
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
هذا يعني أن جهاز الكمبيوتر المحلي لا يتعرف على المضيف البعيد. اكتب yes
ثم اضغط على ENTER
للمتابعة.
إذا لم تقم بتوفير عبارة المرور عند إنشاء زوج المفتاح في الخطوة 1، سيتم تسجيل الدخول فوراً. إذا قدمت عبارة مرور، سيُطلب منك إدخالها الآن. بعد التحقق من الهوية، يجب أن يتم فتح جلسة جديدة للشيء مع الحساب المكون على خادم Rocky Linux.
إذا نجحت المصادقة بناءً على المفتاح، فقم بالمتابعة لتعلم كيفية تأمين نظامك بشكل إضافي عن طريق تعطيل ميزة المصادقة بناءً على كلمة المرور لخادم SSH الخاص بك.
الخطوة 4 — تعطيل مصادقة كلمة المرور على الخادم الخاص بك
إذا كنت قادرًا على تسجيل الدخول إلى حسابك باستخدام SSH بدون كلمة مرور، فقد قمت بتكوين المصادقة بناءً على مفتاح SSH بنجاح. ومع ذلك، ميزة المصادقة بناءً على كلمة المرور لا تزال نشطة، مما يعني أن خادمك ما زال معرضًا لهجمات القوة الغاشمة.
قبل إكمال الخطوات في هذا القسم، تأكد من أنك قد قمت بتكوين المصادقة بناءً على المفتاح الخاص بـ الحساب root على هذا الخادم، أو بشكل أفضل، أنك قد قمت بتكوين المصادقة بناءً على المفتاح الخاص بحساب غير الجذر على هذا الخادم مع امتيازات sudo
. ستقوم هذه الخطوة بقفل تسجيل الدخول بناءً على كلمة المرور، لذا يجب التأكد من القدرة على الوصول الإداري لاحقًا.
بمجرد تأكيد أن حسابك البعيد لديه امتيازات إدارية، قم بتسجيل الدخول إلى خادمك البعيد باستخدام مفاتيح SSH، إما كـ root أو باستخدام حساب يمتلك امتيازات sudo
. ثم، افتح ملف تكوين خدمة SSH:
- sudo vi /etc/ssh/sshd_config
داخل الملف، ابحث عن توجيه يُسمى PasswordAuthentication
. قد يتم تعليق هذا بواسطة علامة تحذير #
. اضغط على i
لوضع vi
في وضع الإدخال، ثم قم بإلغاء تعليق السطر وقم بتعيين القيمة إلى no
. سيتم ذلك تعطيل القدرة على تسجيل الدخول عبر SSH باستخدام كلمات المرور:
...
PasswordAuthentication no
...
عند الانتهاء من إجراء التغييرات، اضغط على ESC
ثم :wq
لحفظ التغييرات في الملف والخروج. لتنفيذ هذه التغييرات فعليًا، نحتاج إلى إعادة تشغيل خدمة sshd
:
- sudo systemctl restart sshd
كإجراء احترازي، افتح نافذة الطرفية الجديدة واختبر تشغيل خدمة SSH للتأكد من أنها تعمل بشكل صحيح قبل إغلاق الجلسة الحالية:
- ssh username@remote_host
بمجرد التحقق من أن خدمة SSH تعمل بشكل صحيح، يمكنك بأمان إغلاق جميع جلسات الخادم الحالية.
أصبحت خدمة SSH على خادم Rocky Linux الخاص بك الآن تستجيب فقط لمفاتيح SSH. تم تعطيل المصادقة بناءً على كلمة المرور بنجاح.
الختام
يجب أن يكون لديك الآن تكوين المصادقة بناءً على مفتاح SSH على خادمك، مما يتيح لك تسجيل الدخول دون الحاجة إلى تقديم كلمة مرور للحساب.
إذا كنت ترغب في معرفة المزيد حول العمل مع SSH، فقم بالاطلاع على دليل أساسيات SSH الخاص بنا.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-rocky-linux-9