يستأجر بعض المستخدمين VPS غير مكلف نسبيًا مع Windows لتشغيل خدمة سطح مكتب بعيد. يمكن فعل الشيء نفسه على Linux دون وضع أجهزتك الخاصة في مركز البيانات أو استئجار خادم مخصص. يحتاج شخص ما إلى بيئة رسومية مألوفة للاختبار والتطوير ، أو سطح مكتب بعيد بقناة واسعة للعمل من الأجهزة المحمولة. هناك العديد من الاستخدامات لنظام حوسبة الشبكة الافتراضية (VNC) المستند إلى بروتوكول FrameBuffer (RFB). في مقال قصير ، سنخبرك بكيفية إعداده في جهاز افتراضي باستخدام أي برنامج Hypervisor.
главление:
اختيار خادم VNC
يمكن دمج خدمة VNC في نظام المحاكاة الافتراضية ، بينما يقوم برنامج Hypervisor بربطها بالأجهزة التي تمت محاكاتها ولا يلزم أي تكوين إضافي. يتضمن هذا الخيار عبءًا كبيرًا ولا يتم دعمه من قبل جميع الموفرين - حتى في التنفيذ الأقل كثافة للموارد ، عندما يتم تمرير تجريد مبسط (الإطارات الاحتياطية) إلى الجهاز الظاهري بدلاً من محاكاة جهاز رسومات حقيقي. في بعض الأحيان ، يكون خادم VNC مرتبطًا بخادم X قيد التشغيل ، ولكن هذه الطريقة أكثر ملاءمة للوصول إلى جهاز مادي ، وعلى جهاز افتراضي يخلق عددًا من الصعوبات التقنية. من الأسهل تثبيت خادم VNC باستخدام خادم X مدمج. لا يتطلب وجود أجهزة مادية (محول فيديو ولوحة مفاتيح وماوس) أو مضاهاة باستخدام برنامج Hypervisor ، وبالتالي فهو مناسب لأي نوع من أنواع VPS.
التثبيت والإعداد
سنحتاج إلى جهاز افتراضي مع Ubuntu Server 18.04 LTS في التكوين الافتراضي. يوجد العديد من خوادم VNC في المستودعات القياسية لهذا التوزيع:
يتم تثبيت بيئة سطح المكتب بكل التبعيات بالأمر التالي:
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/[email protected]
يسمح لك الحرف @ في الاسم بتمرير وسيطة لتكوين الخدمة. في حالتنا ، فإنه يحدد منفذ عرض 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 [email protected]
الرقم 1 في الاسم يحدد رقم الشاشة.
أوقف خادم VNC ، وابدأ تشغيله كخدمة وتحقق من الحالة:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
إذا كانت الخدمة قيد التشغيل ، يجب أن نحصل على شيء مثل هذا.
اتصال سطح المكتب
لا يستخدم التكوين الخاص بنا التشفير ، لذلك يمكن اعتراض حزم الشبكة من قبل المتسللين. بالإضافة إلى ذلك ، في خوادم VNC في كثير من الأحيان
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 بإنشاء شاشة جديدة وبدء الجلسة. للمصادقة بداخله ، يمكنك استخدام مدير عرض رسومي (على سبيل المثال ،
المصدر: www.habr.com