نبذة عن ssh و كيفية التعامل معه

السلام عليكم و رحمة الله و بركاته

أريد أن أتحدث عن هذا الموضوع اليوم، لأن أغلب المستخدمين العاديين في اللينوكس ليس لديهم معلومات عن هذا الموضوع، و أريد فقط أن أبين ما هو SSH (Secure Shell) و أيضا كيفية استخدامه و ما هي مميزاته و فوائده…

النقاط التي سأتحدث عنها:

[ul]
[li]ما هو الـ SSH و ما هو عمله[/li][li]لماذا الحاجة له؟[/li][li]الاتصال عبره و التعامل معه[/li]
[li]نقل الملفات عبر SCP و SFTP[/li]
[li]نقاط أخيرة أود الحديث عنها[/li][/ul]

ما هو SSH:

الـ SSH أو الـ Secure SHell هو عبارة عن بروتوكول شبكة، يستخدم للاتصال بين الأجهزة و التحكم بها عن بعد، ميزة هذا البروتوكول أنه آمن، بعكس باقي البروتوكولات التي تستخدم لهذا الغرض، مثل Telnet و FTP، فهذه البروتوكولات تفتقد للحماية، و قد يقوم أي دخيل باعتراض البيانات المرسلة في الجلسة و تغييرها و بالتالي حدوث مشكلة أمنية في حال كان الاتصال بالطرف الثاني مهم و حساس، و لذلك لو تم استخدام SSH فلن يتمكن أحد من اختراق الجلسة و التغيير فيها…
هذا البروتوكول مستخدم بشكل أساسي و بكثرة على أنظمة Gnu/Linux و Unix، و كما أسلفت هو أكثر أمانا من البروتوكولات الأخرى، و تم تصميمه ليكون بديل الـ Telnet و باقي بروتوكولات الاتصال الغير آمنة…
بعض النقاط المهمة عن الـ SSH:

[ul]
[li]بستخدم التشفير باستخدام المفتاح العام أو المعلن ليقوم بتعريف الطرف البعيد الذي يريد الاتصال به و التصريح له بالاتصال…[/li][li]استخدام الـ SSH الأساسي هو الدخول للأجهزة التي تحوي على خدمة تعمل و تقبل الاتصالات عبره و لكن أيضا يمكن استخدامه في نقل الملفات باستخدام بروتوكولات مرفقة معه و هي: SFTP أو SCP و يمكن أيضا عبره عمل اتصالات X11 للتحكم بسطح المكتب البعيد… و هناك عدة مميزات أخرى له، سأضع لها روابط في النهاية في قسم الروابط…[/li][li]المنفذ الأساسي المستخدم لهذا البروتوكول هو 22[/li][li]هذا البروتوكول يستخدم بينة الخادم/العميل، بمعنى أنه لابد من تواجد خدمة تعمل في الـ Background على الجهاز الآخر البعيد تقوم بقبول الاتصالات ليتم الاتصال عبرها…[/li][/ul]
حاليا يوجد إصدارين من هذا البروتوكول:

[ul]
[li]SSH 1.0: في عام 1995 تم تصميم النموذج الأول لهذا البروتوكول، و كان يحمل اسم SSH-1[/li][li]SSH 2.0: في 2006 تم تشكيل فريق اسمه Secsh من قبل IETF (Internet Engineering Task Force) للعمل على البروتوكول الجديد الذي يحمل اسم SSH-2 الآن… و هو المستخدم حاليا.[/li][/ul]

لماذا الحاجة له؟:

من الطبيعي أن تكون أهم نقطة في هذا الموضوع هي الأمان العالي، فمع وجود أكثر من طريقة للتشفير في الاتصال (Blowfish – triple-DES)، تكون هناك حماية من الهجمات من نوع (الرجل في الوسط) أي بلغة أخرى الدخلاء على الجلسة الحالية، و أيضا مع استخدام تقنية تشفير RSA فلن يكون هناك داعي للقلق عند نقل العرض من الجهاز البعيد للجهاز المحلي المتصل به…

الاتصال عبره و التعامل معه:

أمر الاتصال عبر SSH بسيط جداـ كما هو الحال مع الـ Telnet و غيرها… فقط يتم كتابة الأمر:
[LEFT]ssh username@hostname[/LEFT]
[RIGHT]مع استبدال username باسم المستخدم الذي يملك صلاحية الاتصال بالجهاز الهدف و hostname باسم الجهاز الهدف الذي تريد الاتصال به، و سيتم عمل الاتصال بالسيرفر و طلب كلمة المرور…[/RIGHT]
[RIGHT]في حال كان الاتصال بالسيرفر على منفذ غير المنفذ الإفتراضي (22) فيمكن استخدام الأمر التالي:[/RIGHT]
[LEFT]ssh -p [port] username@hostname[/LEFT]
[RIGHT]عند استخدام لينوكس، فإنه يحوي برنامجا موجود مسبقا على النظام للاتصال عبر SSH، كل ما علينا عمله هو فتح الترمنال أو أي برنامج آخر للشل و تنفيذ الأمر السابق مع تغيير اسم المستخدم و كلمة المرور، و سيتم عمل الاتصال بالسيرفر…
في حال لم يكن هناك برنامج مضمن مع النظام (في حال كنت تستخدم ويندوز) فيمكن تحميل هذا البرنامج و استخدامه للاتصال بالسيرفر:[/RIGHT]
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
كما ذكرت عند الاتصال بالسيرفر سيسأل عن اسم المستخدم و كلمة المرور، و بعد إدخالها سيقوم السيرفر بنقلك لمجلد الـ Home الخاص بك (الخاص بالمستخدم الذي قام بتسجيل الدخول) و يمكنك سرد محتوياته بالأمر ls كما في الصورة التالية:

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

نقل الملفات عبر SCP و SFTP:

SCP تعني Secure Copy و لو ركزنا فيها قليلا سنجدها نفسها CP و لكن مع إضافة S للأمان، و هذا يعني أن الأوامر المستخدمة للنسخ تعمل بنفس مبدأ عمل أوامر CP كما سنلاحظ الآن…
لنقل ملف باستخدام SCP عبر SSH، تكون صيغة الأمر كالتالي: (الموضوع جدا بسيط و لا يحتاج أكثر من أمر واحد)
[LEFT]scp [file name] user@server:folder[/LEFT]
[RIGHT]الأمر السابق جدا بسيط:[/RIGHT]
[RIGHT]file name: نستبدلها باسم الملف الكامل الذي نريد نسخه على السيرفر[/RIGHT]
[RIGHT]user@server:folder: نستبدل user باسم المستخدم الذي يملك صلاحية الاتصال عبر ssh و server تكون اسم السيرفر الذي نريد الاتصال به، و folder هو اسم المجلد على السيرفر الذي نريد نسخ الملف إليه…[/RIGHT]
[RIGHT]هذا مثال على الأمر، قمت بنسخ ملف اسمه file.txt إلى السيرفر داخل مجلد اسمه public_html:[/RIGHT]

و يمكن أيضا نسخ ملفات من السيرفر البعيد إلى الجهاز المحلي، و ذلك عبر الأمر:
[LEFT]scp user@server:path_to_file [destination name on the local pc][/LEFT]
المتغيرات في الأمر السابق هي نفسها و لكن مع تغيير بسيط، يكون أمر scp في البداية ثم يليه مكان الملف الموجود على السيرفر البعيد الذي نريد نسخه، و بعد اسم الملف على الجهاز المحلي الذي نريد نسخه إليه…
يمكن أيضا نسخ مجلدات من و إلى السيرفر و ذلك عبر الأمر التالي:
[LEFT]scp -r user@server:path_to_file [destination folder name on the local pc] لنسخ مجلد من السيرفر إلى الجهاز المحلي[/LEFT]
[LEFT]scp -r [source folder name on the local pc] user@server:destination_folder لنسخ مجلد من الجهاز المحلي إلى السيرفر[/LEFT]
بالنسبة لنقل الملفات عبر SFTP:
فالموضوع مماثل تماما لـ SCP و صيغة الأمر:
sftp username@hostname
عند تنفيذ الأمر السابق، سيتم طلب كلمة المرور للمستخدم الذي تم إدخاله، و عند إدخالها سيقوم النظام بالدخول للسيرفر البعيد و بدء تلقي الأوامر، و صيغة الأوامر تكون كالتالي:
أولا، لتكون على علم أين أنت يجب معرفة مكان العمل الحالي على كل من السيرفر البعيد و الجهاز المحلي، و للقيام بذلك، نقوم بتنفيذ الأمرين التاليين:
pwd //يعرض مكان العمل الحالي على السيرفر البعيد
lpwd //يعرض مكان العمل الحالي على الجهاز المحلي
و لتتمكن من الوصول للمكان الذي تريده على السيرفر البعيد، تستطيع استخدام الأمر التالي لتغيير المسار:
cd [remote_directory]
و مثله أيضا على الجهاز المحلي نستخدم الأمر التالي لتغيير المسار الحالي (مكان العمل):
lcd [local_directory]
لنسخ ملف من السيرفر البعيد إلى الجهاز المحلي (سيتم نسخ الملف في مكان العمل الحالي):
get [remote_file_name]
و كمثال عليه، أريد أن أقوم بنسخ ملف اسمه file.txt من السيرفر فيكون الأمر كالتالي:
get file.txt
عند تنفيذ الأمر السابق سيتم نسخ الملف من السيرفر إلى الجهاز المحلي في مكان العمل الحالي…
و لوضع ملف ما من الجهاز المحلي على السيرفر البعيد، يتم تنفيذ هذا الأمر:
put [local_file_name]
سيتم عند تنفيذ الأمر السابق نسخ الملف المطلوب من الجهاز إلى السيرفر البعيد و وضعه في مسار المجلد الحالي
يوجد عدة أوامر أخرى يجب معرفتها، و هي كالتالي:
ls //تعرض الملفات الموجودة داخل دليل على السيرفر البعيد
lls //تعرض الملفات الموجودة داخل المجلد الحالي على الجهاز المحلي
mkdir //يقوم بعمل مجلد جديد على السيرفر داخل المجلد الحالي
lmkdir //يقوم بعمل مجلد جديد داخل المجلد الحالي على الجهاز المحلي
rename //يقوم بعمل إعادة تسمية لملف على السيرفر البعيد
rm //يقوم بحذف ملف من السيرفر البعيد
[LEFT]rmdir //يقوم بحذف مجلد من السيرفر البعيد[/LEFT]
[LEFT]exit //يقوم بإنهاء الجلسة الحالية و قطع الإتصال[/LEFT]
يوجد عدة أوامر أخرى، و لكنني لن أتتطرق لها، فالموضوع هو فقط عبارة عن توضيح لهذه التقنية و كيفية استخدامها بدون أن أدخلك في تفاصيل الأمان و طرق توليد المفاتيح الخاصة بها و غيرها من التفاصيل المتقدمة قليلا…

نقاط أخيرة أود الحديث عنها:

كما لاحظتم، فإن التعامل مع SSH و SCP تقريبا يعني التعامل مع اللينوكس، لأن كل الأوامر المستخدمه فيها هي في الواقع أوامر في نظام اللينوكس، حتى أمر النسخ في SCP، هو نفسه تماما الأمر CP لكن مع إضافة الـ S و تغير شكل أحد عوامل الأمر، حيث يكون أحد عوامله هو السيرفر البعيد، الذي تكون كتابته دائما بالطريقة user@server، و لذلك لا بد من معرفة الأوامر الأساسية على الأقل للتتمكن من التعامل مع هذه البروتوكولات و تصبح قادر على استخدامها…

أود الإشارة أيضا إلى بعض الأشياء التي استخدمتها في هذا الدرس:

[ul]
[li]استخدمت لتشغيل الـ SSH على الويندوز برنامج OpenSSH for Windows و يمكن الوصول لصفحته من هنا[/li][li]عند تثبيت OpenSSH for Windows سيتم عمل مجلد داخل دليل تثبيته اسمه bin يحوي الملفات اللازمة لتشغيل SSH و SCP كما تلاحظون في الصورة التالية:[/li][/ul]

[ul]
[li]للاتصال بسيرفر عبر SSH من داخل ويندوز، يفضل تحميل برنامج PuTTY من هنا[/li][/ul]
:cool:

ابدعت الله يعطيك العافيه

موسوعة جميلة اخي

لي عودة إنشاء الله

بتوفيق :slight_smile:

موضوع في القمه !!

ابدعت ماشاء الله عليكـ

تحياتي

الله ايبارك فيك اخى معلومات قيمة.