Product SiteDocumentation Site

9.2. تسجيل الدخول عن بعد

الاتصال بالحاسوب عن بعد أمر أساسي لأي مدير نظام. فالمخدمات، المحتجزة في غرفها الخاصة، نادراً ما تزود بلوحة مفاتيح وشاشة دائمتين — بل توصل بالشبكة.

9.2.1. الدخول البعيد الآمن: SSH

صمم بروتوكول SSH‏ (Secure SHell) مع التركيز على الأمان والوثوقية. الاتصالات عبر SSH آمنة: حيث يستوثق من الشخص الآخر، وتشفر جميع تبادلات البيانات.
يقدم SSH خدمتين لنقل الملفات. الأمر scp هو أداة نصية يمكن استخدامها كما يستخدم cp، إلا أن أي مسار إلى جهاز آخر يُسبَق باسم الجهاز، متبوعاً بنقطتين رأسيتين (:).
$ scp file machine:/tmp/
أما sftp فهو أمر تفاعلي، شبيه بالأمر ftp. يستطيع sftp نقل عدة ملفات في جلسة واحدة، كما يمكن التحكم بالملفات البعيدة باستخدامه (حذف، إعادة تسمية، تغيير الصلاحيات، الخ).
تستخدم دبيان OpenSSH، وهو نسخة حرة من SSH يشرف عليها مشروع OpenBSD (نظام تشغيل حر يعتمد على النواة BSD، ويركز على الأمن) مشتقة من برنامج SSH الأصلي الذي طورته شركة SSH Communication Security Corp الفنلندية. لقد طورت هذه الشركة SSH بشكل برنامج حر في البداية، لكن قررت لاحقاً متابعة تطويره تحت رخصة احتكارية. بعد ذلك أنشأ مشروع OpenBSD المشتق OpenSSH لمتابعة صيانة نسخة حرة من SSH.
يقسم OpenSSH إلى حزمتين: قسم العميل في الحزمة openssh-client، وقسم المخدم في الحزمة openssh-server. تعتمد الحزمة ssh على القسمين وتسهل تثبيتهما معاً (apt install ssh).

9.2.1.1. المصادقة بالمفاتيح

في كل مرة يسجل فيها أحد دخوله عبر SSH، يطلب المخدم البعيد كلمة سر للتحقق من هوية المستخدم. هذا قد يسبب المشاكل إذا كنت تريد أتمتة الاتصال، أو كنت تستخدم أداة تتطلب الاتصال عبرSSH كثيراً. لذلك يقدم SSH نظام المصادقة بالمفاتيح.
يُولِّد المستخدم زوجاً من المفاتيح على الجهاز العميل باستخدام ssh-keygen -t rsa؛ يوضع المفتاح العام في ~/.ssh/id_rsa.pub، بينما يوضع المفتاح الخاص في ~/.ssh/id_rsa ثم يستدعي المستخدم الأمر ssh-copy-id server لإضافة مفتاحه العام إلى ~/.ssh/authorized_keys على المخدم. إذا لم تتم حماية المفتاح الخاص ”بعبارة مرور passphrase“ عند إنشائه، فسوف تتم جميع عمليات تسجيل الدخول اللاحقة على المخدم دون كلمة سر. وإلا يجب فك تشفير المفتاح الخاص في كل مرة بإدخال عبارة المرور. لحسن الحظ، يسمح لنا ssh-agent بالاحتفاظ بالمفتاح الخاص في الذاكرة دون الحاجة لإدخال كلمة السر بشكل متكرر. لتحقيق ذلك، عليك استخدام ssh-add ببساطة (مرة واحدة في كل جلسة عمل) شرط أن تكون جلسة العمل مرتبطة سلفاً بنسخة فعالة من ssh-agent. تُفعِّل دبيان ssh-agent افتراضياً في الجلسات الرسومية، لكن يمكن تعطيل ذلك بتحرير /etc/X11/Xsession.options. بالنسبة للجلسات النصية، عليك تفعيل ssh-agent يدوياً باستخدام eval $(ssh-agent).

9.2.1.2. استخدام تطبيقات X11 عن بعد

يسمح بروتوكول SSH بتوجيه البيانات الرسومية (جلسات ”X11“، نسبةً لاسم النظام الرسومي الأكثر انتشاراً في يونكس)؛ يحافظ المخدم عند ذلك على قناة مخصصة لهذه البيانات. على وجه الخصوص، يمكن عرض برنامج رسومي يُنَفَّذ عن بعد على مخدم X.org على الشاشة المحلية، وسوف تُؤمَّن الجلسة بالكامل (الدخل والعرض). هذه الميزة معطلة افتراضياً لأنها تسمح للتطبيقات البعيدة بالتداخل مع النظام المحلي. يمكنك تفعليها بتحديد X11Forwarding yes في ملف ضبط المخدم (/etc/ssh/sshd_config). أخيراً، يجب أن يطلبها المستخدم أيضاً بإضافة الخيار -X إلى الأمر ssh.

9.2.1.3. إنشاء الأنفاق المشفرة باستخدام توجيه المنافذ

يسمح الخياران -R و-L للأمر ssh بإنشاء ”أنفاق مشفرة“ بين جهازين، باستخدام التوجيه الآمن لمنفذ TCP محلي (انظر الملاحظة الجانبية أساسيات TCP/UDP) إلى جهاز بعيد أو العكس.
ينشئ الأمر ssh -L 8000:server:25 intermediary جلسة SSH مع المضيف intermediary وينصت للمنفذ المحلي 8000 (انظر شكل 9.3, “توجيه منفذ محلي باستخدام SSH”). في كل مرة ينشأ فيها اتصالاً مع هذا المنفذ، سيفتح ssh اتصالاً من الحاسوب intermediary إلى المنفذ 25 على server، وسيربط الاتصالين معاً.
أما الأمر ssh -R 8000:server:25 intermediary فهو ينشئ جلسة SSH أيضاً مع الحاسوب intermediary، لكن سوف ينصت ssh للمنفذ 8000 على ذلك الجهاز (انظر شكل 9.4, “توجيه منفذ بعيد باستخدام SSH”). أي اتصال يرد إلى إلى هذا المنفذ سيجعل ssh يفتح اتصالاً من الجهاز المحلي إلى المنفذ 25 على server، ويربط الاتصالين معاً.
في كلا الحالتين، يكون الاتصال مع المنفذ 25 على المضيف server، بعد أن يمر خلال نفق SSH الواصل بين الجهاز المحلي والجهاز intermediary. في الحالة الأولى، مدخل النفق هو المنفذ المحلي 8000، وتتحرك البيانات باتجاه الجهاز intermediary قبل أن تتوجه إلى server عبر الشبكة ”العامة“. أما في الحالة الثانية، فقد تبدل موقعي الدخل والخرج في النفق؛ فقد أصبح المدخل هو المنفذ 8000 على الجهاز intermediary، أما المخرج فهو على الجهاز المحلي، الذي يوجه البيانات بعدها إلى server. عملياً، إما أن يكون server هو الجهاز المحلي أو الجهاز الوسيط. في تلك الحالة سيحمي SSH الاتصال بين الطرفين.
توجيه منفذ محلي باستخدام SSH

شكل 9.3. توجيه منفذ محلي باستخدام SSH

توجيه منفذ بعيد باستخدام SSH

شكل 9.4. توجيه منفذ بعيد باستخدام SSH

9.2.2. استخدام سطوح المكتب الرسومية البعيدة

تسمح VNC ‏(Virtual Network Computing – حوسبة الشبكات الظاهرية) بالوصول البعيد لسطوح المكتب الرسومية.
أكثر ما تستخدم هذه الأداة في الدعم الفني؛ حيث يرى مدير النظام الأخطاء التي يواجهها المستخدمون، ويبين لهم الطريق الصحيح لمعالجتها دون الاضطرار للوقوف جانبهم.
لكن أولاً، يجب أن يسمح المستخدم بمشاركة جلسة العمل. يمكن تقعيل هذا الخيار في بيئة سطح المكتب GNOME في جيسي من لوحة التحكم (بخلاف الإصدارات السابقة من دبيان، حيث كان المستخدم يحتاج لتثبيت وتشغيل البرنامج vino). لا تزال بيئة KDE تحتاج krfb، للسماح بمشاركة جلسة العمل الحالية عبر VNC. أما بالنسبة لسطوح المكتب الرسومية الأخرى، يقدم الأمر x11vnc (من الحزمة ذات الاسم نفسه) الوظيفة ذاتها؛ يمكنك توفيره للمستخدم باستخدام أيقونة واضحة.
عندما يوفر VNC الجلسة الرسومية، على مدير النظام أن يتصل بها باستخدام عميل VNC. في GNOME هناك vinagre وremmina لهذا الغرض، بينما KDE تحوي krdc (في القائمة KInternetRemote Desktop Client). هناك عملاء VNC غير هذه تعتمد على الواجهة النصية، مثل xvnc4viewer في الحزمة الدبيانية ذات الاسم نفسه. بعد الاتصال، يستطيع مدير النظام أن يرى ما يجري، وأن يعمل على الجهاز المتصل به عن بعد، وأن يظهر للمستخدم كيف يتابع.
يخدم VNC المستخدمين المتنقلين، أو مديري الشركات، الذين يحتاجون أحياناً الدخول من منزلهم إلى سطح مكتب بعيد يشبه الذي يستخدمونه في العمل. إعداد مثل هذه الخدمة أعقد: عليك أولاً تثبيت الحزمة vnc4server، وتعديل إعدادات مدير العرض حتى يقبل طلبات XDMCP Query (بالنسبة للمدير gdm3، يمكن تنفيذ هذا من خلال إضافة Enable=true في قسم ”xdmcp“ من الملف /etc/gdm3/daemon.conf)، وأخيراً، تشغيل مخدم VNC باستخدام inetd بحيث يتم تشغيل جلسة عمل تلقائياً عندما يحاول المستخدم تسجيل الدخول. مثلاً، يمكنك إضافة السطر التالي إلى /etc/inetd.conf:
5950  stream  tcp  nowait  nobody.tty  /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 16 securitytypes=none
إعادة توجيه الاتصالات الواردة إلى مدير العرض تحل مشكلة المصادقة، لأن المستخدمين الذين يملكون حسابات محلية هم فقط من سيمر عبر شاشة دخول gdm3 (أو مكافئه kdm، أو xdm، الخ). بما أن هذه العملية تسمح بتسجيل دخول عدة مستخدمين في الوقت نفسه دون أي مشاكل (شرط أن يكون المخدم قوياً بما يكفي)، فمن الممكن استخدامها أيضاً لتوفير سطوح مكتب كاملة للمستخدمين الجوالين (أو لنظم سطح المكتب الأضعف، المستخدمة بشكل thin clients). يسجل المستخدمون دخولهم ببساطة إلى شاشة المخدم باستخدام vncviewer server:50، لأن المنفذ المستخدم هو 5950.