إن Virtual Network Computing (VNC) هو نظام لمشاركة الشاشة يُستخدم للوصول إلى واجهات المستخدم الرسومية عن بُعد. وهو يستخدم بروتوكول مخزن إطارات البيانات المؤقت عن بُعد (RFB) مما يسمح لخادم واحد (جانب المستخدم) بالاتصال بجانب آخر (العميل). إن VNC آمن ومحمي ويعمل على جميع أنظمة التشغيل.
RealVNC, UltraVNC, Xfce, TightVNC، على سبيل المثال لا الحصر، هي عملاء VNC الأكثر شعبية المستخدمة اليوم. من بين قائمة البدائل المتاحة، أنت حر في اختيار أي VNC يناسبك. في هذا البرنامج التعليمي، سنرشدك خلال خطوات تثبيت وتكوين VNC على Ubuntu 20.04. سنقوم بتثبيت Xfce بسبب سرعته وخفته وأدائه الممتاز.
سنبدأ بإعداد خادم VNC على خادم Ubuntu وإنشاء اتصال آمن عبر نفق SSH. أخيرًا، سنستخدم برنامج عميل VNC على جهازنا المحلي للتفاعل مع الخادم من خلال بيئة سطح مكتب رسومية.
المتطلبات الأساسية
لمتابعة هذا البرنامج التعليمي، ستحتاج إلى:
-
خادم Ubuntu 20.04 بمستخدم غير جذري (non-root) وجدار حماية غير معقد (UFW).
-
جهاز كمبيوتر محلي مثبت عليه عميل VNC. أيضًا، عميل VNC الذي سنستخدمه يتصل عبر SSH الأنفاق.
الخطوة 1 — تثبيت بيئة سطح مكتب وخادم VNC
على عكس إصدارات Ubuntu السابقة، لا يأتي Ubuntu 20.04 مع VNC مثبتًا مسبقًا. كخطوة أولى، سنقوم بتثبيت الحزم اللازمة من مستودع Ubuntu الرسمي. قبل المضي قدمًا، دعنا نحدث الحزم الحالية:
|
1 |
sudo apt update |
الآن سنقوم بتثبيت Xfce وحزمة xfce4-goodies باستخدام الأمر:
|
1 |
sudo apt install xfce4 xfce4-goodies |
أثناء تثبيت الحزمة، ستظهر لك شاشة تطالبك باختيار مدير عرض افتراضي لـ Xfce. تجاهل الرسالة أو اضبطها كافتراضية، ثم اضغط على ENTER.
مدير العرض هو برنامج يسمح للمستخدمين بتسجيل الدخول إلى بيئة سطح المكتب من خلال واجهة رسومية. في هذا البرنامج التعليمي، سنستخدم Xfce عند الاتصال بعميل VNC حيث قمنا بتسجيل الدخول كمستخدم Ubuntu غير جذري (non-root). لذلك، لن يكون لاختيار مدير العرض أي تأثير على التثبيت الخاص بنا.
بعد تثبيت Xfce، سنقوم بتثبيت خادم TightVNC:
|
1 |
sudo apt install tightvncserver |
في الخطوة التالية، استخدم الأمر vncserver لإعداد كلمة مرور وصول VNC وإنشاء ملفات التكوين الأولية. اكتب ما يلي لبدء تشغيل مثيل خادم VNC:
|
1 |
vncserver |
بعد ذلك، قم بإعداد كلمة مرور يتراوح طولها بين 6 و8 أحرف واضغط على ENTER. ستظهر لك رسالة مطالبة:
|
1 2 3 4 5 |
المخرجات ستحتاج إلى توفير a كلمة مرور للوصول إلى أسطح المكتب الخاصة بك. كلمة المرور: تأكيد: |
في المستقبل، إذا كنت ترغب في تغيير كلمة المرور الخاصة بك أو إضافة كلمة مرور للعرض فقط، فاستخدم الأمر:
|
1 |
vncpasswd |
الآن، سيكون لديك جميع التكوينات الافتراضية التي تم إنشاؤها للخادم، ومنفذ عرض 5901 تم إطلاقه كـ :1. يمكن لـ VNC إطلاق مثيلات متعددة على منافذ عرض أخرى مثل :2, :3، و :4 يشير إلى المنفذ 5902, 5903، و 5904 على التوالي:
|
1 2 3 4 5 6 7 8 9 |
المخرجات هل ترغب في إدخال كلمة مرور للعرض -فقط password (y/n)? n xauth: ملف /home/cloudsigma/.Xauthority غير موجود exist جديد 'X' سطح مكتب هو your_hostname:1 إنشاء افتراضي بدء تشغيل برنامج نصي /home/cloudsigma/.vnc/xstartup بدء التطبيقات المحددة في /home/cloudsigma/.vnc/xstartup سجل ملف هو /home/cloudsigma/.vnc/your_hostname:1.log |
تم الآن تثبيت خادم VNC الخاص بك وتشغيله بنجاح. في الخطوة التالية، دعنا نقوم بتكوين الخادم لتشغيل Xfce للوصول إليه من خلال الواجهة الرسومية.
الخطوة 2 — تكوين خادم VNC
تحت دليل home، ستجد مجلد .vnc الذي يحتوي على جميع ملفات التكوين المسماة startup. في البداية، ستجد ملف startup قيد التشغيل والذي تم إنشاؤه تلقائيًا عندما قمنا بتشغيل الأمر vncserver في الخطوة-1. تم إنشاء برنامج التشغيل النصي عندما قمت بتشغيل الأمر vncserver في الخطوة السابقة. ومع ذلك، ستقوم الآن بإنشاء ملفك الخاص لتشغيل سطح مكتب Xfce. سيتعين علينا أيضًا إنشاء خادمنا الخاص لتشغيل سطح مكتب Xfce لأن تكوين VNC سيتغير.
قبل المتابعة، يتعين علينا إيقاف مثيل خادم VNC الذي يعمل على المنفذ 5901:
|
1 |
vncserver -kill :1 |
سترى المخرجات التالية:
|
1 2 |
المخرجات إنهاء Xtightvnc عملية ID 17648 nano ~/.vnc/xstartup |
بدلاً من 17648، قد تحصل على رقم مختلف ولا بأس بذلك. بعد ذلك، سنقوم بتعديل ملف xstartup . قبل إجراء أي تعديلات على الملف، دعنا نأخذ نسخة احتياطية من الملف الأصلي:
|
1 |
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak |
بعد ذلك، قم بإنشاء ملف xstartup جديد وافتحه في أي محرر نصوص. في هذا البرنامج التعليمي، نستخدم nano:
|
1 |
nano ~/.vnc/xstartup |
بمجرد الانتهاء، أضف الأسطر التالية إلى الملف:
|
1 2 3 |
#!/bin/bash xrdb $HOME/.Xresources startxfce4 & |
كلما قمت ببدء تشغيل خادم VNC أو إعادة تشغيله، يتم تنفيذ هذه الأوامر تلقائيًا. السطر الأول هو Shebang الذي يخبر النظام بمعلومات المفسر لتمرير ملف ~/.vnc/xstartup للتنفيذ. السطر التالي xrdb $HOME/. Xresources، يخبر إطار عمل واجهة المستخدم الرسومية لـ VNC بقراءة ملف Xresources الخاص بمستخدم الخادم. أخيرًا، يطلب السطر الأخير من الخادم تشغيل Xfce. بعد إضافة هذه الأسطر، احفظ الملف وأغلقه.
نحتاج إلى جعل الملف قابلاً للتنفيذ حتى يتمكن خادم VNC من استخدام ملف التشغيل الجديد:
|
1 |
chmod +x ~/.vnc/xstartup |
بعد ذلك، أعد تشغيل خادم VNC:
|
1 |
vncserver -localhost |
الآن سيكون لديك خيار -localhost مضافًا هنا. يقوم localhost بربط خادم VNC بواجهة الاسترجاع (loopback interface) الخاصة بخادمك، مما يسمح بالاتصالات من الخوادم المثبتة فقط. بعد ذلك، سنقوم بإنشاء نفق SSH بين جهازنا المحلي والخادم. الهدف هو إضافة طبقة إضافية من الأمان حول VNC. لماذا؟ لأن المستخدمين الذين سيكون لديهم حق الوصول هم أولئك الذين لديهم بالفعل وصول SSH إلى الخادم.
سترى المخرجات التالية:
|
1 2 3 4 |
جديد 'X' سطح مكتب هو your_hostname:1 بدء التطبيقات المحددة في /home/sammy/.vnc/xstartup سجل ملف هو /home/cloudsigma/.vnc/your_hostname:1.log |
بعد إعداد التكوين، نكون جاهزين للاتصال بخادم VNC من جهازنا المحلي.
الخطوة 3 — الاتصال بأمان بسطح مكتب VNC
عند الاتصال بالخادم، لا يستخدم VNC بروتوكولات آمنة. لذلك، نحتاج إلى إنشاء نفق SSH ومطالبة عميل VNC بإجراء اتصال باستخدام النفق بدلاً من السماح له بإجراء اتصال مباشر بمفرده.
سنقوم بإنشاء اتصال SSH على جهاز الكمبيوتر المحلي الخاص بنا باستخدام الأمر ssh الذي يقوم بالتوجيه إلى اتصال localhost . استخدم الأمر الموجود على الطرفية لإنشاء اتصال SSH:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
دعنا نفك تشفير الكود أعلاه:
-
-L 59000:localhost:5901: يحدد خيار -L أن المنفذ المحدد على الكمبيوتر المحلي ( 59000) سينتقل إلى المضيف والمنفذ المحددين على الخادم الوجهة ( localhost:5901). هذا يعني أن المنفذ 5901 على الخادم الوجهة سيتم تحديده كـ your_server_ip). المنفذ المحلي الذي تحدده عشوائي. طالما أن المنفذ غير مرتبط بالفعل بخدمة أخرى، فأنت حر في استخدامه كمنفذ إعادة توجيه للنفق الخاص بك.
-
-C: لتمكين الضغط مما يساعد بشكل أكبر في تقليل استهلاك الموارد وتسريع الأداء.
-
-N: مفيد لإعادة توجيه المنافذ. هذا يبلغ ssh بعدم تنفيذ أي أوامر عن بعد.
-
-l cloudsigma your_server_ip: الـ -l يتيح لك هذا المفتاح تحديد المستخدم الذي تريد تسجيل الدخول به بعد الاتصال بالخادم.
الأمر أعلاه هو طريقة أكثر أمانًا لإنشاء اتصال آمن بدلاً من مجرد فتح جدار الحماية الخاص بخادمك للسماح بالاتصالات بالمنفذ 5901 من أي مكان. بمجرد إجراء الاتصال، يقوم نفق SSH بتوجيه المحتويات من المنفذ 5901 على VNC الخاص بك إلى المنفذ 59000 على جهازك المحلي من خلال منفذ SSH الافتراضي؛ المنفذ 22.
يمكنك أيضًا استخدام PuTTY للاتصال بخادمك. افتح PuTTY، وانتقل إلى الجانب الأيسر من واجهة PuTTY وابحث عن فرع Connection للاتصال. بعد ذلك، قم بتوسيع فرع SSH وانقر على Tunnels. في شاشة Options controlling SSH port forwarding الشاشة، أدخل 59000 كـ Source Port و localhost:5901 كـ Destination:

احتفظ بجميع الخيارات دون تغيير، وانقر على Add، ثم Apply لتطبيق النفق. بمجرد بدء النفق، استخدم عميل VNC للاتصال بـ localhost: 59000. بشكل افتراضي، سيُطلب منك المصادقة باستخدام كلمة المرور التي أنشأناها في الخطوة-1. بمجرد الاتصال، سترى سطح مكتب Xfce الافتراضي:

يمكنك الوصول إلى الملفات وإدارتها في الدليل الرئيسي. أيضًا، قم بتكوين خادم VNC الخاص بك ليعمل كـ systemd service.
الخطوة 4 — تشغيل VNC كخدمة Systemd
يتيح لك إعداد خادم VNC ليعمل كخدمة systemd إدارة الخادم. ستكون قادرًا على البدء، الإيقاف، إعادة التشغيل أو الإنهاء، وفقًا لراحتك واحتياجاتك. في كل مرة يتم فيها تشغيل الخادم، يمكنك استخدام أوامر إدارة systemd للتحقق مما إذا كان الخادم ON أو OFF.
أولاً، سنقوم بإنشاء ملف وحدة جديد لتحديد منفذ عرض VNC الذي نريد استخدامه عند إدارة الخدمات. قم بتعريف ملف الوحدة:
|
1 |
sudo nano /etc/systemd/system/vncserver@.service |
ستجد الرمز @ في نهاية اسم الملف، والذي يسمح لك بتمرير وسيط لاستخدام تكوين الخدمة.
بعد ذلك، أضف مجموعة الأسطر إلى ملف الوحدة. قم بإعادة تسمية User, Group, WorkingDirectory, واسم المستخدم في قيمة PIDFILE:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=cloudsigma Group=cloudsigma WorkingDirectory=/home/cloudsigma PIDFile=/home/cloudsigma/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target |
إذا كان VNC قيد التشغيل بالفعل، فإن الأمر ExecStartPre سيقوم بإيقافه. أما الأمر ExecStart فيقوم بتشغيل VNC ويضبط عمق الألوان على 24 بت بدقة 1280×800. يمكنك تعديل خيارات بدء التشغيل هذه بناءً على متطلباتك. لاحظ أيضًا أن الأمر ExecStart يتضمن مجددًا الخيار -localhost. بمجرد الانتهاء، احفظ ملف الوحدة وأغلقه.
بعد ذلك، قم بتعريف ملف الوحدة الجديد لنظامك:
|
1 |
sudo sudo systemctl daemon-reload |
قم بتفعيل ON ملف الوحدة:
|
1 |
sudo systemctl enable vncserver@1.service |
الـ 1 الذي يلي الـ @ تشير العلامة إلى رقم الشاشة الذي يجب أن تظهر الخدمة عليه. في حالتنا، هو الافتراضي :1 كما تمت مناقشته في الخطوة-2. إذا كان VNC لا يزال قيد التشغيل، يمكنك إيقاف المثيل الحالي لخادم VNC باستخدام kill الأمر:
|
1 |
vncserver -kill :1 |
ثم، قم بتشغيله كما تقوم بتشغيل أي خدمة systemd أخرى:
|
1 |
sudo systemctl start vncserver@1 |
يمكنك التحقق من أنه بدأ باستخدام هذا الأمر:
|
1 |
sudo systemctl status vncserver@1 |
سترى المخرجات التالية:
|
1 2 3 4 5 6 7 8 |
المخرجات vncserver@1.service - بدء TightVNC خادم عند بدء التشغيل Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-07 17:23:50 UTC; 6s ago Process: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Main PID: 39795 (Xtightvnc) ... |
خادم VNC الخاص بك جاهز الآن للاستخدام كلما تم تمهيد الخادم الخاص بك، ويمكنك إدارته باستخدام systemctl أوامر مثل أي خدمة systemd أخرى. ومع ذلك، لن ترى أي اختلاف من جانب العميل. لإعادة الاتصال، ابدأ تشغيل نفق SSH الخاص بك باستخدام:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
يمكنك مرة أخرى إجراء اتصالات باستخدام عميل VNC الخاص بك بـ localhost:59000 مع الخادم الخاص بك.
الخاتمة
في البداية، قد يبدو إعداد خادم VNC أمرًا صعبًا، خاصة عندما تحاول الاتصال بجهاز كمبيوتر جديد. بمجرد إنشاء اتصال موثوق، سيكون العمل مع جهاز كمبيوتر بعيد أمرًا ممتعًا ومثيرًا. مع وجود خادم VNC آمن يعمل على خادم Ubuntu 20.04 الخاص بك، يمكنك بسهولة إدارة مواردك وملفاتك وبرامجك وإعداداتك بواجهة رسومية سهلة الاستخدام. قد يكون استخدام النطاق الترددي المفرط أحد عيوب استخدام VNC. يمكنك التغلب على ذلك باستخدام شاشات ذات دقة منخفضة وتدرج رمادي لنقل أسرع.
حوسبة سعيدة!
التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.