النقل عبر أنفاق SSH
SSH، أو القشرة الآمنة، هي عبارة عن بروتوكول قياسي يقوم بتشفير الإتصالات بين حاسوبك وخادم ما. ويمنع التشفير مشغلي الشبكة من رؤية الإتصلات أو تعديلها. يمكن استعمال SSH لنطاق واسع من تطبيقات الإتصالات، والأكثر شيوعاً منها هي تطبيقات تسجيل الدخول الآمن لدى الخادم وعمليات نقل الملفات الآمنة (SCP أو SFTP).
إن بروتوكول SSH مفيد بشكل خاص لتجاوز الحجب لأنه بإمكانه توفير أنفاق مشفرة ولأنه يعمل كعميل بروكسي عام. لذا قد تتردد الجهات الرقابية من حجب بروتوكول SSH بشكل كامل حيث أنه يُستخدم للعديد من الأغراض غير تجاوز الرقابة؛ فعلى سبيل المثال هو يُستخدم من قبل مدراء الأنظمة لإدارة خوادمهم على الإنترنت.
لاستخدام SSH ينبغي أن يكون لديك حساب على جهاز خادم يونيكس أو لينكس
عموماً. لتجاوز الرقابة ينبغي أن يكون اتصال هذا الخادم بالإنترنت غير
مقيداً ويفضل أن يكون مداراً من قبل شخص يحظى بثقتك. وهناك أيضاً بعض
الشركات التي تبيع حسابات على خوادمها، والعديد من خطط إستضافة المواقع
توفر وصول SSH. يمكنك إيجاد قائمة بمزودي حسابات شيل على الموقع
http://www.google.com/Top/Computers/Internet/Access_Providers/Unix_Shell_Providers/،
وتباع الحسابات بحوالى 2-10 دولارات أمريكية في الشهر.
هناك برنامج SSH إسمه OpenSSH وهو مثبت أصلاً على معظم حواسيب يونيكس ولينكس وماك أو أس كبرنامج لأسطر الأوامر يعمل من محطة طرفية كـ "ssh". أما بالنسبة لويندوز فيمكنك أيضاً الحصول على تطبيق SSH مجاني إسمه PuTTY.
إن جميع الإصدارات الحديثة من SSH تدعم إنشاء بروكسي SOCKS الذي يسمح لمتصفح الإنترنت بالإضافة إلى العديد من البرامج الأخرى باستخدام اتصال SSH المشفر للإتصال بالإنترنت دون فلترة. في هذا المثال، سنقوم بشرح هذا الإستعمال لـ SSH فقط. الخطوات أدناه تؤدي إلى إعداد بروكسي SOCKS على المنفذ المحلي 1080 على حاسوبك باستعمال حساب شيل إسمه "accountname@example.com".
سطر أوامر لينكس/يونكس وماك أو اس (باستخدام OpenSSH)
إن برنامج OpenSSH متوفر على الموقع http://www.openssh.com/ ولكنه يكون مثبت بشكل مسبق على حواسيب لينكس/يونكس وماك أو اس.
يحتوي أمر ssh الذي ستقوم بتشغيله على رقم منفذ محلي (عادة ما يكون 1080)، وإسم خادم وإسم مستخدم (إسم حساب). وهو يبدو كالتالي:
ssh -D localportnumber accountname@servername
وعلى سبيل المثال:
سيُطلب منك إدخال كلمة السر ومن ثم سيتم إدخالك إلى الخادم. باستخدام خيار -D، سيتم إنشاء بروكسي SOCKS محلي وسيبقى موجوداً طالما أنت متصل بالخادم. يمكنك الآن الانتقال إلى عملية التحقق من مفتاح المستضيف وإعداد تطبيقاتك, وإلا فأنت لا تستخد النفق الذي قمت بإنشائه.
واجهة المستخدم الجرافيكية في ويندوز (باستخدام PuTTY)
بالإمكان تنزيل PuTTY من
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html.
يمكنك حفظ برنامج putty.exe على قرصك الصلب لاستعماله في
المستقبل أو تشغيله بشكل مباشر من الموقع الإلكتروني (عادة ما يكون ذلك
ممكناً على الحواسيب المشتركة العامة مثل حواسيب المكتبات أو مقاهي
الإنترنت).
عند تشغيل PuTTY ستظهر نافذة إعداد الجلسة. قم أولاً بإدخال إسم المستضيف (العنوان) الخاص بخادم SSH الذي ترغب في الإتصال به (في المثال، "example.com"). إن كنت تعرف عنوان الـ IP فقط أو إن كان حجب نظام أسماء النطاقات (DNS) يمنعك من استعمال إسم المستضيف، يمكنك استعمال عنوان الـ IP بدلاً منه. إذا كنت ستؤدي هذه الخطوات بشكل متكرر يمكنك إنشاء بروفايل PuTTY لحفظ هذه الخيارات بالإضافة إلى الخيارات الموضحة أدناه بحيث يتم استخدامها في كل مرة.
بعد ذلك, ضمن القائمة Category, اختر Connection > SSH > Tunnels.
أدخل الرقم 1080 للمنفذ المصدر واختر صناديق "Dynamic" و "IPv4".
الآن اضغط Add, ثم Open. عندها سيتم الإتصال بالخادم وستفتح نافذة جديدة ستطلب منك إدخال إسم المستخدم وكلمة السر الخاصين بك.
قم بإدخال هذه المعلومات وسيتم إدخالك إلى الخادم وستتلقى سطر أمر من الخادم. بعد ذلك سيتم إنشاء بروكسي SOCKS. هام: يمكنك الآن الانتقال إلى عملية التحقق من مفتاح المستضيف وإعداد تطبيقاتك, وإلا فأنت لا تستخدم النفق الذي قمت بإنشائه.
التحقق من مفتاح المستضيف
في المرة الاولى التي تقوم فيها بالإتصال بالخادم سيطلب منك تأكيد بصمة مفتاح المستضيف لذلك الخادم. إن بصمة مفتاح المستضيف هي عبارة عن تسلسل طويل من الأحرف والأرقام (بالنظام الست عشري) مثل 57:ff:c9:60:10:17:67:bc:5c:00:85:37:20:95:36:dd وتعرف هذه البصمة خادم معين بشكل آمن. إن التحقق من بصمة مفتاح المستضيف هو عبارة عن إجراء أمني للتأكد من أنك متصل بالخادم الذي تعتقد أنك متصل به، وللتأكد من عدم إعاقة الإتصال المشفر.
SSH لا يوفر أي وسيلة للتحقق من هذا الأمر بشكل أتوماتيكي. للإستفادة من هذه التقنية الأمنية ينبغي عليك تفقد قيمة بصمة مفتاح المستضيف مع مدير الخادم الذي تستعمله، أو أطلب من أي شخص تثق به محاولة الإتصال بنفس الخادم للتأكد من أن البصمة هي ذاتها.
إن عملية التحقق من مفتاح المستضيف مهمة للتأكد من أن SSH يحمي خصوصية إتصالاتك من التنصت، ولكنها ليست ضرورية إن كنت ترغب في تجاوز الرقابة فقط ولا تكترث إذا كان مشغلوا الشبكة يرون محتويات إتصالاتك.
إعداد التطبيقات لاستعمال البروكسي
إن البروكسي الذي تم إنشاؤه باتباع الخطوات أعلاه سيعمل إلى حين إغلاق برنامج الـSSH. ولكن، إذا تمت إعاقة إتصالاك بالخادم، ستضطر لتكرار الخطوات ذاتها لإعادة تفعيل البروكسي.
بعد إعداد البروكسي وتشغيله ستحتاج لإعداد تطبيقات البرنامج من أجل استعماله. باستخدام الخطوات أعلاه سيكون بروكسي SOCKS موجود على مستضيف محلي، المنفذ 1080 (المعروف أيضاً بـ 127.0.0.1، المنفذ 1080). ينبغي عليك أن تحاول التأكد من إعداد تطبيقاتك بطريقة تمنع حدوث أية تسريبات لنظام أسماء النطاقات (DNS) والتي قد تجعل SSH أقل فعالية من ناحية حماية الخصوصية وتجاوز الرقابة.
مزيد من الخيارات
حتى الآن, جميع هذه الأوامر تعرض سطر أوامر على جهاز بعيد حيث تستطيع
أن تنفذ منه أي تعليمات يوفرها لك الجهاز. قد تحتاج أحياناً لتنفيذ تعليمة
واحدة على جهاز بعيد, والعودة بعد ذلك إلى سطر الأوامر على جهازك المحلي.
ويمكن تحقيق ذلك عن طريق وضع أمر ليتم تنفيذه بواسطة الجهاز البعيد في
علامات ااقتباس مفردة.
$ ssh remoteusername@othermachine.domain.org 'mkdir /home/myname/newdir'
ما تحتاج إليه أحياناً هو أن تقوم بتشغيل أمر يستغرق وقتاً طويلاً على جهاز بعيد, لكنك لست متأكداً من امتلاكك للوقت الكافي خلال جلسة ssh الحالية. إذا قمت بإغلاق الاتصال البعيد قبل أن يتم الانتهاء من تنفيذ الأمر ، سيتم إلقاء هذا الأمر. لتجنب فقدان عملك, يمكنك أن تبدأ عن طريق ssh جلسة شاشة بعيدة ثم فصلها وإعادة الاتصال بها متى أردت. لفصل جلسة شاشة بعيدة, ببساطة أغلق اتصال ssh: إن جلسة شاشة مفصولة ستبقى تعمل على الجهاز البعيد.
تقدم ssh العديد من الخيارات الأخرى. تستطيع أيضاً إعداد الأنظمة المفضلة بالنسبة لك للسماح لك بتسجيل الدخول أو تشغيل الأوامر بدون تحديد كلمة المرور في كل مرة. الإعداد معقد لكن يمكن أن يوفر لك الكثير من الكتابة, حاول إجراء بعض البحث على "ssh-keygen", "ssh-add", و "authorized_keys".
scp: نسخ الملفات
يتجاوز بروتوكول SSH تعليمات ssh الأساسية. أحد التعليمات المفيدة بشكل خاص التي تعتمد على بروتوكول SSH هو scp, تعليمة النسخ الآمن. المثال التاني ينسخ ملفاً من الدليل الحالي على جهازك المحلي إلى الدليل /home/me/stuff على الجهاز البعيد.
$ scp myprog.py me@othermachine.domain.org:/home/me/stuff
انتبه أن الأمر سيكتب فوق أي ملف موجود مسبقاً بالاسم /home/me/stuff/myprog.py. (أو ستحصل على رسالة خطأ إذا كان هناك ملف بهذا الاسم وليس لديك صلاحية الكتابة فوقه.) إذا كان /home/me هو الدليل الرئيسي الخاص بك, يمكن للدليل الهدف أن يتم اختصاره.
$ scp myprog.py me@othermachine.domain.org:stuff
يمكنك بنفس السهولة النسخ في الاتجاه الآخر: من الجهاز البعيد إلى المحلي.
$ scp me@othermachine.domain.org:docs/interview.txt yesterday-interview.txt
الملف على الجهاز البعيد هو interview.txt في الدليل الفرعي docs من الدليل الرئيسي الخاص بك. سيتم نسخ الملف إلى yesterday-interview.txt في الدليل الرئيسي الخاص بنظامك.
يمكن استخدام scp لنسخ ملف من جهاز بعيد إلى آخر.
$ scp user1@host1:file1 user2@host2:otherdir
تستطيع استخدام الخيار -r نسخ كافة الملفات والدلائل بشكل تكراري.
$ scp -r user1@host1:dir1 user2@host2:dir2
شاهد صفحة دليل scp لمزيد من الخيارات.
rsync: النسخ الجماعي الآلي والنسخ الاحتياطية
rsync هو أمر مفيد للغاية يحتفظ بدليل بعيد متزامنا مع دليل محلي. نذكره هنا لأنه طريقة مفيدة من سطر الأوامر للقيام بعمليات على الشبكة, مثل ssh, ولأن بروتوكول SSH مفضل كوسيلة النقل الخاصة بـ rsync.
وفيما يلي مثال بسيط ومفيد. يقوم بنسخ الملفات من الدليل المحلي /home/myname/docs إلى الدليل المسمى backup/ في الدليل الرئيسي الخاص بك على النظام quantum.example.edu. يقوم rsync عملياً بتقليل كمية النسخ عن طريق العديد من عمليات التحقق المعقدة.
$ rsync -e ssh -a /home/myname/docs me@quantum.example.edu:backup/
يستخدم الخيار -e بروتوكول SSH للنقل, على النحو المفضل. الخيار -a (والذي يرمز إلى "archive") يقوم بنسخ كل شيء داخل الدليل المحدد. إذا كنت تريد حذف الملفات على النظام المحلي حالما يتم نسخهم ، ضع الخيار --delete.
جعل الحياة أسهل عند الاستخدام المتكرر لـ SSH
إذا كنت تستخدم SSH للاتصال بالكثير من المخدمات المختلفة, ستقوم غالباً بالإخطاء بكتابة اسم المستخدم أو حتى اسم المستضيف (تخيل أن تتذكر 20 اسم مستخدم مختلف مع اسماء المستضيفات الخاصة بها). لحسن الحظ, تقدم SSH offers طريقة سهلة لإدارة معلومات الجلسة من خلال ملف إعدادات.
ملف الإعدادات مخفي في الدليل الرئيسي الخاص بك تحت الدليل .ssh (المسار الكامل سيكون شيئاً من هذا القبيل /home/jsmith/.ssh/config - إذا لم يتوفر هذا الملف تستطيع إنشائه). استخدم محررك المفضل لفتح هذا الملف وتحديد عناوين المخدمات كالتالي:
Host dev HostName example.com User fc
تستطيع إضافة عدة مستضيفين بهذا الشكل في ملف الإعدادات الخاص بك, وبعد أن تقوم بحفظه, قم بالاتصال بالمضيف الذي أسميته "dev" بتشغيل الأمر التالي:
$ ssh dev
تذكر ، بقدر ما تستخدم هذه الأوامر بقدر ما تستطيع توفير الوقت.