كيفية استخدام SSH للاتصال بخادم عن بُعد

مقدمة

أحد الأدوات الأساسية التي يجب أن يتقنها مسؤول النظام هو SSH.

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

في هذا الدليل، سنناقش كيفية استخدام SSH للاتصال بنظام بعيد.

نشر تطبيقات الواجهة الأمامية الخاصة بك من GitHub باستخدام منصة تطبيق DigitalOcean. دع DigitalOcean يركز على توسيع تطبيقك.

البنية الأساسية للصياغة

للاتصال بنظام بعيد باستخدام SSH، سنستخدم الأمر ssh.

إذا كنت تستخدم نظام Windows، ستحتاج إلى تثبيت إصدار من OpenSSH لتتمكن من استخدام ssh من خلال الطرفية. إذا كنت تفضل العمل في PowerShell، يمكنك اتباع وثائق Microsoft لإضافة OpenSSH إلى PowerShell. إذا كنت تفضل أن يكون لديك بيئة Linux كاملة متاحة، يمكنك إعداد WSL، والنظام الفرعي لـ Linux على نظام Windows، الذي سيتضمن ssh افتراضيًا. وأخيرًا، كخيار ثالث خفيف، يمكنك تثبيت Git for Windows، الذي يوفر بيئة طرفية bash لـ Windows الأصلية تتضمن أمر ssh. كل هذه الخيارات مدعومة بشكل جيد وسوف يتوقف اختيارك على تفضيلك.

إذا كنت تستخدم نظام Mac أو Linux، فسيكون لديك بالفعل أمر ssh متاحًا في طرفيتك.

أبسط شكل للأمر هو:

  1. ssh remote_host

يفترض هذا الأمر أن اسم المستخدم على النظام البعيد هو نفس اسم المستخدم على النظام المحلي.

إذا كان اسم المستخدم لديك مختلفًا على النظام البعيد، يمكنك تحديده باستخدام هذا الصيغة:

  1. ssh remote_username@remote_host

بمجرد الاتصال بالخادم، قد يُطلب منك التحقق من هويتك عن طريق تقديم كلمة مرور. في وقت لاحق، سنتناول كيفية إنشاء المفاتيح لاستخدامها بدلاً من كلمات المرور.

للخروج من جلسة SSH والعودة إلى جلسة الطرف المحلي الخاصة بك، اكتب:

  1. exit

كيف يعمل SSH؟

يعمل SSH عن طريق ربط برنامج العميل بخادم SSH، المسمى بـ sshd.

في القسم السابق، كان ssh هو برنامج العميل. وكان خادم SSH يعمل بالفعل على remote_host الذي حددناه.

على معظم بيئات Linux، يجب أن يبدأ خادم sshd تلقائيًا. إذا لم يكن يعمل لأي سبب، قد تحتاج إلى الوصول المؤقت إلى خادمك من خلال واجهة ويب، أو واجهة تسلسلية محلية.

العملية المطلوبة لبدء خادم ssh تعتمد على توزيع Linux الذي تستخدمه.

على أوبونتو، يمكنك بدء خادم SSH عن طريق كتابة:

  1. sudo systemctl start ssh

هذا يجب أن يبدأ خادم sshd ويمكنك بعد ذلك تسجيل الدخول عن بُعد.

كيفية تكوين SSH

عندما تقوم بتغيير إعدادات SSH، فإنك تغير إعدادات خادم sshd.

في أوبونتو، يوجد ملف تكوين sshd الرئيسي في المسار /etc/ssh/sshd_config.

قم بنسخ النسخة الحالية من هذا الملف قبل التحرير:

  1. sudo cp /etc/ssh/sshd_config{,.bak}

افتحها باستخدام nano أو محرر النص المفضل لديك:

  1. sudo nano /etc/ssh/sshd_config

سوف تريد ترك معظم الخيارات في هذا الملف كما هي. ومع ذلك، هناك بعض الخيارات التي قد ترغب في إلقاء نظرة عليها:

/etc/ssh/sshd_config
Port 22

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

/etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

تصريحات مفاتيح المضيف تحدد مكان البحث عن مفاتيح المضيف العالمية. سنناقش ما هي المفتاح المضيف لاحقًا.

/etc/ssh/sshd_config
SyslogFacility AUTH
LogLevel INFO

تشير هذه البنودان إلى مستوى التسجيل الذي يجب أن يحدث.

إذا كنت تواجه صعوبات في SSH، فزيادة مستوى التسجيل قد يكون وسيلة جيدة لاكتشاف سبب المشكلة.

/etc/ssh/sshd_config
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

تحدد هذه المعلمات بعض معلومات تسجيل الدخول.

LoginGraceTime يحدد عدد الثواني التي يتم فيها الاحتفاظ بالاتصال على قيد الحياة دون تسجيل الدخول بنجاح.

قد تكون فكرة جيدة تعيين هذا الوقت بقليل أكثر من الوقت الذي يستغرقه تسجيل الدخول بشكل طبيعي.

PermitRootLogin يحدد ما إذا كان المستخدم الجذر مسموحًا له بتسجيل الدخول.

في معظم الحالات، يجب تغيير هذا إلى no عندما تقوم بإنشاء حساب مستخدم يمتلك صلاحيات مرتفعة (من خلال su أو sudo) ويمكنه تسجيل الدخول عبر SSH، من أجل تقليل مخاطر لأي شخص يحصل على وصول جذر إلى خادمك.

strictModes هو حارس أمان سيُرفض محاولة تسجيل الدخول إذا كانت ملفات المصادقة قابلة للقراءة من قِبَل الجميع.

يمنع هذا المحاولات عندما لا تكون ملفات التكوين آمنة.

/etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10

تكوّن هذه المعلمات قدرة تُدعى إعادة التوجيه X11. يتيح لك هذا عرض واجهة مستخدم رسومية (GUI) لنظام بعيد على النظام المحلي.

يجب تمكين هذا الخيار على الخادم وتقديمه مع عميل SSH أثناء الاتصال باستخدام الخيار -X.

بعد إجراء التغييرات الخاصة بك، قم بحفظ الملف وإغلاقه. إذا كنت تستخدم nano، اضغط Ctrl+X، ثم عندما يُطلب منك ذلك، اضغط Y ثم Enter.

إذا قمت بتغيير أي إعدادات في /etc/ssh/sshd_config، تأكد من إعادة تحميل خادم sshd الخاص بك لتنفيذ التعديلات:

  1. sudo systemctl reload ssh

يجب عليك اختبار تغييراتك بعناية للتأكد من أنها تعمل بالطريقة التي تتوقعها.

قد يكون من الجيد فتح بعض جلسات الطرفية أثناء إجراء التغييرات. سيتيح لك ذلك التراجع عن التكوين إذا لزم الأمر دون أن تحجب نفسك.

كيفية تسجيل الدخول إلى SSH باستخدام المفاتيح

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

كيف تعمل المصادقة القائمة على المفتاح؟

تعمل المصادقة القائمة على المفتاح عن طريق إنشاء زوج من المفاتيح: مفتاح خاص ومفتاح عام.

يقع المفتاح الخاص على جهاز العميل ويتم تأمينه والاحتفاظ به سريًا.

يمكن تقديم المفتاح العام لأي شخص أو وضعه على أي خادم ترغب في الوصول إليه.

عند محاولة الاتصال باستخدام زوج المفاتيح، سيستخدم الخادم المفتاح العام لإنشاء رسالة لجهاز الكمبيوتر العميل يمكن قراءتها فقط باستخدام المفتاح الخاص.

ثم يرسل جهاز الكمبيوتر العميل الرد المناسب إلى الخادم وسيعرف الخادم أن العميل شرعي.

يتم تنفيذ هذه العملية تلقائيًا بعد تكوين المفاتيح.

كيفية إنشاء مفاتيح SSH

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

أدخل ما يلي في سطر الأوامر:

  1. ssh-keygen -t rsa

قد تُطلب منك تعيين كلمة مرور على ملفات المفتاح نفسها، ولكن هذه ممارسة نادرة إلى حد ما، ويجب عليك الضغط على مفتاح Enter عبر الحوارات لقبول القيم الافتراضية. ستتم إنشاء مفاتيحك في ~/.ssh/id_rsa.pub و ~/.ssh/id_rsa.

قم بالانتقال إلى دليل .ssh عبر كتابة:

  1. cd ~/.ssh

انظر إلى أذونات الملفات:

  1. ls -l
Output
-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys -rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa -rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

كما ترى، الملف id_rsa قابل للقراءة والكتابة فقط من قبل المالك. هذا يساعد على الحفاظ على سريته.

الملف id_rsa.pub، ومع ذلك، يمكن مشاركته وله أذونات مناسبة لهذا النشاط.

كيفية نقل مفتاحك العام إلى الخادم

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

  1. ssh-copy-id remote_host

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

خيارات الجانب العميل

هناك عدد من العلامات الاختيارية التي يمكنك توفيرها عند الاتصال عبر SSH.

قد تكون بعض هذه الإعدادات ضرورية لمطابقة الإعدادات في تكوين sshd على الخادم البعيد.

على سبيل المثال، إذا قمت بتغيير رقم المنفذ في تكوين sshd الخاص بك، فستحتاج إلى مطابقة ذلك المنفذ على جانب العميل من خلال كتابة:

  1. ssh -p port_number remote_host

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

إذا كنت ترغب في تنفيذ أمر واحد فقط على نظام بعيد، يمكنك تحديده بعد الخادم مثل هذا:

  1. ssh remote_host command_to_run

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

كما ذكرنا سابقًا، إذا تم تمكين توجيه X11 على كل من الحواسيب، يمكنك الوصول إلى تلك الوظيفة عن طريق كتابة:

  1. ssh -X remote_host

بشرط أن يكون لديك الأدوات المناسبة على جهاز الكمبيوتر الخاص بك، ستفتح البرامج التي تستخدمها على النظام البعيد نافذتها الآن على نظامك المحلي.

تعطيل المصادقة بكلمة المرور

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

تحذير: قبل أن تقوم بهذه الخطوة، تأكد من تثبيت مفتاح عام على خادمك. في حال عدم ذلك، ستحظر من الدخول!

باستخدام صلاحيات المستخدم الجذرية أو المستخدم ذو الامتيازات الخاصة ب sudo، افتح ملف تكوين sshd:

  1. sudo nano /etc/ssh/sshd_config

ابحث عن السطر الذي يحتوي على Password Authentication، وقم بإلغاء تعليقه بإزالة العلامة التعليقية الرئيسية #. يمكنك بعد ذلك تغيير قيمته إلى no:

/etc/ssh/sshd_config
PasswordAuthentication no

هناك إعدادين آخرين قد لا يلزم تعديلهما (شريطة أن لم تقم بتعديل هذا الملف من قبل) وهما PubkeyAuthentication و ChallengeResponseAuthentication. يتم تعيينهما افتراضيًا، ويجب أن يكون قراءتهما كالتالي:

/etc/ssh/sshd_config
PubkeyAuthentication yes
ChallengeResponseAuthentication no

بعد إجراء التغييرات، قم بحفظ وإغلاق الملف.

يمكنك الآن إعادة تحميل ديمون SSH:

  1. sudo systemctl reload ssh

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

استنتاج

تعلم طريقتك حول SSH سيفيدك كثيرًا في أي من مشاريع الحوسبة السحابية المستقبلية لك. بينما تستخدم الخيارات المختلفة، ستكتشف وظائف متقدمة أكثر يمكن أن تجعل حياتك أسهل. لقد بقي SSH شائعًا لأنه آمن وخفيف ومفيد في مواقف متنوعة.

بعد ذلك، قد ترغب في التعرف على كيفية العمل مع SFTP لأداء نقل الملفات عبر سطر الأوامر.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server