VPS على نظام Linux بواجهة رسومية: تشغيل خادم VNC على Ubuntu 18.04



يقوم بعض المستخدمين باستئجار خادم Windows VPS غير مكلف نسبيًا لتشغيل خدمات سطح المكتب البعيد. يمكن فعل الشيء نفسه على Linux دون وضع أجهزتك الخاصة في مركز البيانات أو استئجار خادم مخصص. يحتاج شخص ما إلى بيئة رسومية مألوفة للاختبار والتطوير ، أو سطح مكتب بعيد بنطاق ترددي عريض للعمل من الأجهزة المحمولة. هناك العديد من الاستخدامات لحوسبة الشبكة الافتراضية (VNC) بناءً على بروتوكول Remote FrameBuffer (RFB). في مقال قصير ، سنوضح لك كيفية تكوينه على جهاز افتراضي باستخدام أي برنامج Hypervisor ..



جدول المحتويات:



تحديد خادم VNC

تثبيت وتكوين

بدء خدمة عبر نظام d

الاتصال بسطح المكتب



اختيار خادم VNC



يمكن دمج خدمة VNC في نظام المحاكاة الافتراضية ، بينما يقوم برنامج Hypervisor بتوصيلها بالأجهزة التي تمت محاكاتها ولا يلزم أي تكوين إضافي. يتضمن هذا الخيار عبءًا كبيرًا ولا يدعمه جميع الموفرين - حتى في التنفيذ الأقل كثافة للموارد ، عندما يتم نقل تجريد مبسط (الإطارات الاحتياطية) إلى الجهاز الظاهري بدلاً من محاكاة جهاز رسومات حقيقي. أحيانًا يكون خادم VNC مرتبطًا بخادم X قيد التشغيل ، ولكن هذه الطريقة أكثر ملاءمة للوصول إلى جهاز مادي ، بينما على جهاز ظاهري فإنه يخلق عددًا من الصعوبات التقنية. أسهل طريقة هي تثبيت خادم VNC مع خادم X مضمن. لا يتطلب أجهزة مادية (محول فيديو ولوحة مفاتيح وماوس) أو مضاهاة باستخدام برنامج Hypervisor ، وبالتالي فهو مناسب لأي نوع من أنواع VPS.



التثبيت والتكوين



نحن بحاجة إلى آلة افتراضية مع Ubuntu Server 18.04 LTS في التكوين الافتراضي. هناك العديد من خوادم VNC في المستودعات القياسية لهذا التوزيع: TightVNC و TigerVNC و x11vnc وغيرها. استقرنا على TigerVNC - شوكة فعلية لا يدعمها مطور TightVNC. يتم تكوين الخوادم الأخرى بطريقة مماثلة. تحتاج أيضًا إلى اختيار بيئة سطح المكتب: في رأينا ، سيكون XFCE هو الخيار الأمثل نظرًا للمتطلبات المنخفضة نسبيًا لموارد الحوسبة. يمكن للمهتمين تثبيت DE أو WM آخر: كل هذا يتوقف على التفضيلات الشخصية ، لكن اختيار البرنامج يؤثر بشكل مباشر على الحاجة إلى ذاكرة الوصول العشوائي (RAM) وأنوية الحوسبة.



صورة




يتم تثبيت بيئة سطح المكتب بكل التبعيات بالأمر التالي:



sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils


بعد ذلك ، تحتاج إلى تثبيت خادم VNC:



sudo apt-get install tigervnc-standalone-server tigervnc-common


تشغيله كجذر فكرة سيئة. إنشاء مستخدم ومجموعة:



sudo adduser vnc






دعنا نضيف المستخدم إلى مجموعة sudo حتى يتمكن من حل المهام المتعلقة بالإدارة. إذا لم تكن هناك حاجة ، يمكنك تخطي هذه الخطوة:



sudo gpasswd -a vnc sudo


الخطوة التالية هي بدء تشغيل خادم VNC بامتيازات مستخدم vnc لإنشاء كلمة مرور آمنة وملفات التكوين في الدليل ~ / .vnc /. يمكن أن يتراوح طول كلمة المرور من 6 إلى 8 أحرف (يتم قطع الأحرف الإضافية). إذا لزم الأمر ، يتم أيضًا تعيين كلمة مرور للعرض فقط ، أي دون الوصول إلى لوحة المفاتيح والماوس. يتم تنفيذ الأوامر التالية بصفتك مستخدم vnc:



su - vnc
vncserver -localhost no




بشكل افتراضي ، يستخدم بروتوكول RFB نطاق منفذ TCP من 5900 إلى 5906 - وهذا ما يسمى. منافذ العرض ، كل منها يتوافق مع شاشة خادم X. في هذه الحالة ، ترتبط المنافذ بشاشات من: 0 إلى: 6. مثيل خادم VNC الذي بدأناه يستمع على المنفذ 5901 (الشاشة: 1). يمكن أن تعمل المثيلات الأخرى على منافذ أخرى بها شاشات: 2 ،: 3 ، وما إلى ذلك. قبل إجراء مزيد من التكوين ، تحتاج إلى إيقاف الخادم:



vncserver -kill :1


يجب أن يعرض الأمر شيئًا مثل الرسالة التالية: "Killing Xtigervnc process ID 18105 ... Success!".



عند بدء تشغيل TigerVNC ، يتم تشغيل البرنامج النصي ~ / .vnc / xstartup لتعيين معلمات التكوين. لنقم بإنشاء البرنامج النصي الخاص بنا ، بعد أن حفظنا مسبقًا نسخة احتياطية من النص الحالي ، إن وجد:



mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup


يتم بدء جلسة بيئة سطح المكتب XFCE بواسطة برنامج xstartup النصي التالي:



#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &


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



chmod 755 ~/.vnc/xstartup


هذا يكمل تكوين خادم VNC. إذا قمت بتشغيله باستخدام الأمر vncserver -localhost no (نيابة عن مستخدم vnc) ، فيمكنك الاتصال بكلمة المرور المحددة مسبقًا ومشاهدة الصورة التالية:





بدء الخدمة عبر systemd



بدء تشغيل خادم VNC يدويًا ليس مناسبًا تمامًا للاستخدام القتالي ، لذلك سنقوم بتهيئة خدمة النظام. يتم تنفيذ الأوامر كجذر (استخدم sudo). أولاً ، لنقم بإنشاء ملف وحدة جديد لخادمنا:



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


يسمح لك الرمز @ في الاسم بتمرير وسيطة لتكوين الخدمة. في حالتنا ، يقوم بتعيين منفذ عرض VNC. يتكون ملف الوحدة من عدة أقسام:



[Unit]
Description=TigerVNC server
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target


ثم تحتاج إلى إخطار systemd بمظهر ملف جديد وتنشيطه:



sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service


يشير الرقم 1 في الاسم إلى رقم الشاشة.



نوقف خادم VNC ، ونبدأه كخدمة ونتحقق من الحالة:



#    vnc 
vncserver -kill :1


#   
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1


إذا كانت الخدمة قيد التشغيل ، يجب أن نحصل على شيء مثل هذا.





اتصال سطح المكتب



لا يستخدم تكويننا التشفير ، لذلك يمكن اعتراض حزم الشبكة من قبل المهاجمين. بالإضافة إلى ذلك ، غالبًا ما توجد الثغرات الأمنية في خوادم VNC ، لذلك يجب ألا تفتحها للوصول من الإنترنت. للاتصال بأمان على الكمبيوتر المحلي ، تحتاج إلى حزم حركة المرور في نفق SSH ثم تكوين عميل VNC. في Windows ، يمكنك استخدام عميل SSH رسومي (مثل PuTTY). للأمان ، يستمع TigerVNC على الخادم فقط إلى المضيف المحلي ولا يمكن الوصول إليه مباشرة من الشبكات العامة:




sudo netstat -ap |more




في Linux و FreeBSD و OS X وأنظمة التشغيل الأخرى المشابهة لـ UNIX ، يتم تنفيذ النفق من جهاز الكمبيوتر العميل باستخدام الأداة المساعدة ssh (يجب تشغيل sshd على خادم VNC):



ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip


يربط الخيار -L المنفذ 5901 الخاص بالاتصال البعيد بالمنفذ 5901 على المضيف المحلي. يتيح الخيار -C الضغط ، ويخبر -N ssh بعدم تشغيل أمر بعيد. يحدد الخيار -l تسجيل الدخول لتسجيل الدخول عن بُعد.



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





يمكنك تثبيت خادم VNC وتكوينه على Linux على أي VPS تقريبًا. هذا لا يتطلب تكوينات باهظة الثمن وكثيفة الموارد مع محاكاة محول الفيديو أو شراء تراخيص البرامج التجارية. بالإضافة إلى خيار خدمة النظام الذي درسناه ، هناك خيارات أخرى: التشغيل في الوضع الخفي (عبر /etc/rc.local) عند تمهيد النظام أو عند الطلب عبر inetd. هذا الأخير مثير للاهتمام لإنشاء تكوينات متعددة المستخدمين. سيبدأ خادم الإنترنت الفائق خادم VNC ويوصل العميل به ، وسيقوم خادم VNC بإنشاء شاشة جديدة وبدء جلسة. للمصادقة بداخلها ، يمكنك استخدام مدير عرض رسومي (على سبيل المثال ، LightDM ) ، وبعد فصل العميل ، سيتم إغلاق الجلسة وإنهاء جميع البرامج التي تعمل مع الشاشة.






All Articles