في هذا المقال، ستتعلم كل شيء عن SSH وكيفية استخدامه كمطور ويب. قرب نهاية المقال، سنلقي نظرة على بعض الأمثلة الحقيقية للاتصال بالخوادم عبر SSH، لذا تابع القراءة لترى كيف يمكنك الاستفادة من SSH في مشاريعك.
ما هو SSH؟
يوفر SSH (Secure Shell) اتصالاً آمنًا بجهاز كمبيوتر آخر، وعادة ما يكون خادمًا، لتنفيذ مهام مثل تنفيذ أوامر الصدفة (shell commands) عن بعد. قد ترغب في معرفة مقدار مساحة القرص المتوفرة على الخادم، أو تثبيت خدمة أو تطبيق جديد. يمكنك استخدام SSH لتسجيل الدخول إلى الجهاز البعيد وتشغيل أي أمر تحتاجه تقريبًا.
لماذا نستخدم SSH؟
المشكلة في الاتصال بجهاز بعيد عبر الإنترنت هي أن بياناتك ستمر عبر العديد من الشبكات، بعضها قد يكون غير آمن ويحتوي على برامج ضارة أو مستخدمين يتنصتون على الطلبات المهمة. على سبيل المثال، إذا كنت تحاول تشغيل أمر على خادم بعيد من جهاز الكمبيوتر المحلي عبر الإنترنت، فقد يتم اعتراض إرسالك وعرضه وربما تعديله قبل أن يصل إلى وجهته المقصودة.
يمنع SSH حدوث ذلك عن طريق إنشاء اتصال آمن بين الجهازين، حيث يمكنك إرسال طلبات لتشغيل الأوامر على الخادم البعيد بأمان. يمكن أيضًا استخدام SSH لتأمين أي نوع من موارد الشبكة، على سبيل المثال HTTP أو FTP.
كيفية عمل اتصال SSH
بشكل عام، يمكنك إعداد اتصال SSH في الطرفية (terminal) أو موجه الأوامر (command prompt). ستحتاج إلى وجود برنامج خادم SSH يعمل على الجهاز البعيد وعميل SSH على جهازك المحلي لإجراء الاتصال. هذا شيء يتم تكوينه بشكل عام على الخوادم الجديدة عند إعدادها، وإلا فسيكون من الصعب إدارتها.
- لمستخدمي Mac و Linux: تحتوي هذه الأنظمة على عميل SSH مثبت بالفعل.
- لمستخدمي Windows: يمكن استخدام موجه أوامر شبيه بـ Unix مثل GitBash أو نظام Windows الفرعي لـ Linux (WSL) لتوفير الوصول إلى سطر الأوامر، أو يمكنك استخدام عميل مثل PuTTY لإدارة الاتصالات.
متطلبات الاتصال
لإجراء اتصال SSH، تحتاج إلى معرفة شيئين على الأقل:
- مضيف الخادم (Server Host): يمكن أن يكون عنوان IP أو اسم نطاق.
- اسم المستخدم (Username): هو اسم المستخدم على الخادم البعيد الذي تتصل به، وليس المستخدم على جهازك المحلي.
ستحتاج أيضًا إلى طريقة للمصادقة على نفسك للخادم البعيد، والتي يمكن أن تكون إما كلمة مرور أو مفتاح SSH.
الطريقة الأولى: المصادقة باستخدام كلمة المرور
لنجرِ اتصالاً بخادم بعيد باستخدام كلمة مرور. أولاً، اكتب الأمر التالي في الطرفية:
حيث james
هو اسم المستخدم على الخادم البعيد وعنوان 142.93.58.60
هو مضيف الخادم (عنوان IP). سيُطلب منك بعد ذلك إدخال كلمة المرور، والتي تكون مخفية أثناء كتابتها، لذا يجب إدخالها بعناية.
قد ترى رسالة تحذير تطلب منك قبول بصمة الخادم (fingerprint) - أي هويته - لذا اكتب yes
إذا كنت تثق في المورد الذي تحاول الاتصال به. إذا كان اسم المستخدم وكلمة المرور صحيحين، فسترى رسالة الترحيب الخاصة بالخادم ويمكنك البدء في تنفيذ الأوامر.
يمكنك أيضًا استخدام اسم نطاق بدلاً من عنوان IP:
مرة أخرى، أدخل كلمة المرور، وبمجرد إنشاء الاتصال، يمكنك تشغيل الأوامر.
الطريقة الثانية: المصادقة باستخدام مفاتيح SSH
الطريقة الأخرى لإجراء اتصال SSH هي استخدام مفتاح لإثبات أنك مصرح لك بالوصول إلى الخادم. بهذه الطريقة، لا يحتاج الخادم إلى طلب كلمة مرور عند الاتصال، وهو أمر مفيد إذا كنت تقوم بإعداد اتصال SSH في سكربت أو ضمن سير عمل التكامل المستمر (CI).
يمكنك رؤية مفاتيح SSH الخاصة بك في مجلد .ssh
المخفي في الدليل الرئيسي لجهاز الكمبيوتر المحلي. يتكون المفتاح من جزأين:
- المفتاح الخاص (Private Key): يبقى على جهاز الكمبيوتر المحلي ولا يجب مشاركته أبدًا.
- المفتاح العام (Public Key): يمكن تقديمه إلى موارد أخرى، مثل الخادم البعيد، للتحقق من أن الاتصالات التي تنشئها هي منك.
إنشاء واستخدام مفاتيح SSH
- إنشاء مفتاح جديد: إذا لم يكن لديك أي مفاتيح، يمكنك إنشاء مفتاح جديد باستخدام الأمر
ssh-keygen
. يمكنك تحديد اسم للمفتاح وتعيين كلمة مرور اختيارية له لمزيد من الأمان. -
نسخ المفتاح العام إلى الخادم: لتقديم مفتاحك العام إلى خادم بعيد، استخدم الأمر
ssh-copy-id
مع اسم المستخدم والخادم. سيقوم هذا الأمر بنسخ مفتاحك العام إلى ملف المصادقة على الخادم.ssh-copy-id [email protected]
بمجرد أن يمتلك الخادم مفتاحك العام، يمكنك إنشاء اتصال SSH بنفس الطريقة السابقة، ولكن هذه المرة لن يُطلب منك إدخال كلمة مرور (إلا إذا قمت بتعيين كلمة مرور للمفتاح نفسه).
حالة الاستخدام الشائعة: نسخ الملفات
ربما يكون الاستخدام الأكثر شيوعًا لـ SSH لمطوري الويب هو نسخ ملفات المشروع من جهاز الكمبيوتر المحلي إلى خادم بعيد. هناك عدة طرق للقيام بذلك:
scp
(Secure Copy): يأخذ ملفاتك المحلية وينسخها بأمان إلى خادم بعيد. يمكنك أيضًا تحديد المجلد على الخادم البعيد الذي يتم نسخ الملفات إليه.sftp
وrsync
: نظرًا لأنscp
يعتبر قديمًا من قبل منظمة OpenSSH، تتوفر أدوات بديلة مثلsftp
وrsync
للمساعدة في نقل الملفات بين العملاء والخوادم.
يتيح لك استخدام أي من هذه الطرق نشر المحتوى الخاص بك على الخادم البعيد ليصبح متاحًا للعامة.
خلاصة
باختصار، يعد SSH، وبشكل أكثر تحديدًا، الاتصال بالخوادم البعيدة باستخدامه، أداة مفيدة للغاية لمساعدتك في إدارة الموارد التي تستضيف مواقع الويب والتطبيقات الخاصة بك. يمكنك أيضًا استخدامه لنقل مشروع تطوير الويب المحلي الخاص بك إلى خادم بعيد بمجرد أن يصبح جاهزًا للنشر.