تثبيت وإعداد نظام الوصول عن بعد VNC على نظام توزيعة ديبيان 10


دعاء طنينة

حوسبة الشبكة الافتراضية أو ما يدعى VNC هو عبارة عن نظام اتصال يسمح لك بإستخدام لوحة المفاتيح والفأرة الخاصة بك للتفاعل مع بيئة سطح المكتب رسومية للخادم عن بعد مما يسمح بإدارة الملفات والبرمجيات والإعدادات على الخادم (الخادم المتحكم به عن بعد) بشكل أسهل على المستخدمين الذين لا يفضلون استخدام واجهة الأوامر.

في هذا المقال، ستقوم بإعداد خادم VNC على الخادم Debian 10 والاتصال به بأمان عبر SSH وتستخدم TightVNC، هي عبارة عن حزمة التحكم عن بعد سريعة وخفيفة يتضمن هذا الخيار أن يكون اتصال VNC سلسًا ومستقرًا حتى في اتصالات الإنترنت البطيئة.

المتطلبات الأساسية

لإكمال هذا المقال التعليمي، ستحتاج إلى:

  • اتباع دليل الإعداد الاولي لخادم Debian 10 من اجل اعداد خادم Debian 10، وأن يكون لك مستخدم جذري (non-root) يملك صلاحيات sudo ومثبت عليه جدار حماية.

  • حاسوب العميل يثبت عليه عميل VNC يدعم اتصالات VNC عبر قناة اتصال SSH.

    • على نظام تشغيل Windows يمكنك استخدام TightVNC أو RealVNC أو UltraVNC.
    • على نظام التشغيل Mac OS يمكنك استخدام برنامج "مشاركة الشاشة" ، أو يمكنك استخدام تطبيق عبر النظام الأساسي مثل RealVNC.
    • على نظام تشغيل Linux، يمكنك الاختيار من بين العديد من الخيارات، بما في ذلك vinagre أو krdc أو RealVNC أو TightVNC.

    الخطوة الأولى: تثبيت بيئة سطح المكتب وخادم VNC

    خادم Debian 10 لا يأتي مع بيئة سطح مكتب رسومية أو خادم VNC مثبت لذلك لابد من تثبيته أولا ثم سنقوم بتثبيت آخر نسخة من حزمةXfce لبيئة سطح مكتب وحزمة TightVN المتاحة في متجر Debian الرسمي.

قم بتنفيذ الأمر التالي على الخادم من أجل تحديث قائمة الحزم على الخادم:

$ sudo apt update

الآن قم بتنزيل بيئة سطح المكتب Xfce على الخادم الخاص بك من خلال الأمر التالي:

$ sudo apt install xfce4 xfce4-goodies

أثناء التثبيت سيُطلب منك تحديد لوحة المفاتيح من قائمة الخيارات المتوفرة واختيار اللغة المناسبة للغتك و من ثم اضغط على زر الإدخال (Enter) ليستمر التثبيت.

بمجرد اكتمال التثبيت قم بتثبيت خادم TightVNC عبر الأمر التالي:

$ sudo apt install tightvncserver

لإكمال الإعدادات الأولية لخادم VNC بعد التثبيت استخدم الأمرvncserver لإعداد كلمة مرور آمنة وإنشاء ملفات الإعدادات الأولية:

$ vncserver

سيُطلب منك إدخال كلمة مرور والتحقق منها للوصول إلى جهازك عن بُعد:

You will require a password to access your desktops.

Password:
Verify:

يجب أن يتراوح طول كلمة المرور بين ستة وثمانية أحرف، سيتم تقليص كلمات المرور التي تزيد عن 8 أحرف تلقائيًا؛ بمجرد التحقق من كلمة المرور سيكون لديك خيار إنشاء كلمة مرور للعرض فقط؛ إذ لن يتمكن المستخدمون الذين يقومون بتسجيل الدخول باستخدام كلمة مرور العرض فقط من التحكم في VNC باستخدام الفأرة أو لوحة المفاتيح الخاصة بهم، يعد هذا الخيارًا مفيدًا إذا كنت تريد إظهار شيء لأشخاص آخرين يستخدمون خادم VNC . هذه العملية ستعمل على إنشاء ملفات الإعدادات الافتراضية الضرورية ومعلومات الاتصال بالخادم:

Would you like to enter a view-only password (y/n)? n
xauth:  file /home/sammy/.Xauthority does not exist

New 'X' desktop is your_hostname:1

Creating default startup script /home/sammy/.vnc/xstartup
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log

الآن دعنا نقوم بإعداد خادم VNC.

الخطوة الثانية: إعداد خادم VNC

يحتاج خادم VNC إلى معرفة الأوامر التي سينفذها عند بدء التشغيل،على وجه التحديد يحتاج VNC إلى معرفة سطح المكتب الرسومي الذي يجب الاتصال به. توجد هذه الأوامر في ملف الإعدادات الذي يسمى xstartup في المجلد vnc.، الموجود بالمجلد الرئيسي (Home directory)، عندما قمت بتشغيل الأمر vncserver في الخطوة السابقة تم إنشاء البرنامج صغير لبدء التشغيل، ولكننا سنقوم بإنشاء برنامجنا الخاص لتشغيل سطح المكتب Xfce.

عند إعداد VNC لأول مرة سيقوم بإطلاق خادم الافتراضي على المنفذ 5901والذي يسمى بنفذ العرض، ويشار إليه بواسطة VNC كـ ‎:1 فيمكن لـ VNC تشغيل عدة خوادم افتراضية على منافذ العرض الأخرى ، مثل ‎:2 أو 3:.

لأننا بصدد تغيير كيفية إعداد خادم VNC أولاً أوقف نسخة الخادم VNC الذي يعمل على المنفذ 5901 باستخدام الأمر التالي:

$ vncserver -kill :1

ستظهر المخرجات على هذا الشكل ، ولكنك سترى PID (رقم المعرف للعملية) مختلف:

Killing Xtightvnc process ID 17648

قبل التعديل على الملف xstartup قم بعمل نسخة احتياطية له.

$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

الآن قم بإنشاء الملف xstartup جديد وافتحه في محرر النصوص الخاص بك:

$ nano ~/.vnc/xstartup 

يتم تنفيذ الأوامر في هذا الملف تلقائيًا عند بدء تشغيل أو إعادة تشغيل خادم VNC،نحن بحاجة الى VNC على بيئة سطح المكتب لدينا أضف هذه الأوامر إلى الملف:

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

الأمر الأول في الملف xrdb $HOME/.Xresources يخبر واجهة المستخدم الرسومية الـ VNC بقراءة ملف المستخدم Xresources. وهو المكان الذي يمكن للمستخدم فيه إجراء التغييرات على إعدادات معينة لسطح المكتب الرسومي، مثل ألوان واجهة الأوامر، وسمات المؤشر، وعرض الخط، أما الأمر الثاني يطلب من الخادم تشغيل Xfce، حيث ستجد كل البرامج الرسومية التي تحتاجها لإدارة خادمك بشكل مريح.

لضمان أن خادم VNC سيكون قادرًا على استخدام ملف بدء التشغيل الجديد هذا بشكل صحيح؛ سنحتاج إلى جعله قابلاً للتنفيذ.

$ sudo chmod +x ~/.vnc/xstartup

الآن أعد تشغيل خادم VNC.

$ vncserver

سترى المخرجات على هذا النحو:

New 'X' desktop is your_hostname:1

Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log

من خلال الإعدادات الموجود دعنا نتصل بالخادم من أجهزتنا المحلية.

الخطوة الثالثة: توصيل VNC Desktop بأمان

لا يستخدم VNC بروتوكولات آمنة عند الاتصال؛ لذلك سوف نستخدم اتصال عبر SSH لتحقيق اتصال آمن بخادمنا وسنطلب من عميل VNC استخدامه بدلاً من إجراء اتصال مباشر.

قم بإنشاء قناة اتصال SSH على الحاسوب المحلي الخاص بك والذي يقوم بإعادة توجيه اتصال الجهاز المحلي (localhost) لـ VNC بشكل آمن، يمكنك القيام بذلك من خلال واجهة الأوامر على Linux أو macOS باستخدام الأمر التالي:

$ ssh -L 5901:127.0.0.1:5901 -C -N -l sammy  your server_ip

يحدد المتغير L- رقم المنفذ في هذه الحالة تم بناء المنفذ 5901 للاتصال عن بُعد بالمنفذ 5901 على جهازك المحلي، تتيح الراية C- الضغط، بينما يخبر الراية N- الSSH أننا لا نريد تنفيذ أمر عن بعد، وتحدد الراية l- اسم المستخدم لتسجيل الدخول عن بُعد. استبدل اسم المستخدم sammy و your server ip باسم المستخدم العادي وعنوان IP الخاص بخادمك.

إذا كنت تستخدم عميل SSH بواجهة رسومية مثل PuTTY فاستخدم "your_server_ip" كعنوان IP للاتصال، وقم بتعيينه إلى localhost: 5901 كمنفذ جديد لإعادة التوجيه في إعدادات SSH بالبرنامج.

بمجرد تشغيل قناة الإتصال استخدم عميل VNC للاتصال بـ localhost: 5901؛ سيُطلب منك المصادقة باستخدام كلمة المرور التي قمت بتعيينها في الخطوة 1.

بمجرد الاتصال سترى سطح مكتب Xfce الافتراضي:

الصورة2.png

اختر استخدام الإعدادات الافتراضية (Use default config)لإعداد سطح المكتب بسرعة.

يمكنك الوصول إلى الملفات في مجلد المنزل (Home Directory) الخاص بك باستخدام مدير الملفات أو من سطر الأوامر، كما هو موضح هنا:

الصورة3.png

على جهازك المحلي اضغط CTRL + C في واجهة الأوامر من أجل إيقاف قناة الاتصال SSH والعودة لواجهة الأوامر؛ سيؤدي ذلك إلى قطع جلسة اتصال VNC أيضًا.

الآن دعنا نقوم بإعداد خادم VNC كنظام خدمة.

الخطوة الرابعة: تشغيل VNC كنظام خدمة

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

أولاً قم بإنشاء ملف وحدة جديد يسمى etc/systemd/system/vncserver@.service/ باستخدام محرر النصوص المفضل لديك:

$sudo nano /etc/systemd/system/vncserver@.service

يسمح لنا الرمز@ في نهاية الاسم بتمرير إعداد الخدمة، سنستخدم هذا لتحديد منفذ عرض VNC الذي نريد استخدامه عندما ندير الخدمة.

أضف الأسطر التالية إلى الملف وتأكد من تغيير قيمة User (المستخدم) وGroup (المجموعة) و Working Directory (مجلد العمل) وUsername (اسم المستخدم) في قيمة المتغير PIDFILE لمطابقة مع اسم المستخدم الخاص بك:

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy

PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

يوقف أمر ExecStartPre ال VNC إذا كان يعمل بالفعل بينما أمر ExecStart يعمل على تشغيل VNC وتعيين عمق الألوان على لون 24 بت ودقة الوضوح 1280 × 800، يمكنك تعديل خيارات بدء التشغيل هذه أيضًا لتلبية احتياجاتك.

احفظ وأغلق الملف. بعد ذلك، اجعل النظام على علم بملف الوحدة الجديد (unit file).

$ sudo systemctl daemon-reload

تفعيل ملف الوحدة.

$ sudo systemctl enable vncserver@1.service

يشير الرقم 1 الذي يلي العلامة @ إلى رقم العرض الذي يجب أن تظهر عليه الخدمة، وفي هذه الحالة يكون الرقم الافتراضي ‎:1 كما تمت مناقشته في الخطوة الثانية.

أوقف الممثل الحالي لخادم VNC إذا كان لا يزال قيد التشغيل.

$ vncserver -kill :1

ثم قم ببدء تشغيله كما تفعل أي خدمة أخرى.

$ sudo systemctl start vncserver@1

يمكنك التحقق من أن الأمر قد بدأ:

$ sudo systemctl status vncserver@1

إذا بدأ بشكل صحيح يجب أن يعرض المخرجات كما يلي:

● vncserver@1.service - Start TightVNC server at startup
   Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-10-10 17:56:17 UTC; 5s ago
  Process: 935 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
  Process: 940 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
 Main PID: 948 (Xtightvnc)
. . .

سيكون خادم VNC متاحًا الآن عند إعادة تشغيل الجهاز.

ابدأ تشغيل قناة اتصال SSH مرة أخرى:

$ ssh -L 5901:127.0.0.1:5901 -C -N -l sammy  your_server_ip

ثم قم بإجراء اتصال جديد باستخدام برنامج عميل VNC الخاص بك إلىlocalhost : 5901للاتصال بجهازك.

الخلاصة

لديك الآن خادم VNC آمن يعمل على خادم Debian 10 الخاص بك؛ستتمكن الآن من إدارة الملفات والبرامج والإعدادات باستخدام واجهة رسومية سهلة الاستخدام ومألوفة وستتمكن عليها من تشغيل برامج رسومية مثل متصفحات الويب عن بُعد.

ترجمة –وبتصرّف– للمقال How to Install and Configure VNC on Debian 10 لصاحبيه finid و Brian Hogan





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن