في المقالة السابقة ، تناولنا تشغيل خادم VNC في أي نوع من الأجهزة الافتراضية. هذا الخيار له عيوب كثيرة ، أهمها المتطلبات العالية لعرض النطاق الترددي لقنوات نقل البيانات. سنحاول اليوم الاتصال بسطح مكتب Linux رسومي باستخدام RDP (بروتوكول سطح المكتب البعيد). يعتمد VNC على إرسال صفائف البكسل باستخدام بروتوكول RFB (Remote Framebuffer) ، بينما يسمح RDP بإرسال بدائل رسومية أكثر تعقيدًا وأوامر عالية المستوى. يتم استخدامه بشكل شائع لتنظيم خدمات سطح المكتب البعيد على Windows ، لكن خوادم Linux متوفرة أيضًا.
جدول المحتويات:
تثبيت البيئة الرسومية
الترويس للخادم
وتثبيت البرنامج تثبيت خادم RDP وتكوينه
تكوين جدار الحماية
الاتصال بخادم RDP
مدير الجلسة وجلسات المستخدم
تبديل تخطيطات لوحة المفاتيح
تركيب بيئة رسومية
سنأخذ جهازًا افتراضيًا يعمل بنظام Ubuntu Server 18.04 LTS مع اثنين من مراكز المعالجة ، وأربعة غيغابايت من ذاكرة الوصول العشوائي ، ومحرك أقراص ثابتة عشرين غيغابايت (HDD). التكوين الأضعف غير مناسب بشكل جيد لسطح المكتب الرسومي ، على الرغم من أنه يعتمد على المهام التي يتم حلها. لا تنس استخدام الرمز الترويجي Habrahabr10 للحصول على خصم 10٪ عند الطلب.
يتم تثبيت بيئة سطح المكتب بكل التبعيات بالأمر التالي:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
كما في الحالة السابقة ، اخترنا XFCE نظرًا لمتطلباتها الحسابية المنخفضة نسبيًا.
الترويس للخادم وتثبيت البرامج
غالبًا ما يتم نشر الأجهزة الافتراضية بترجمة اللغة الإنجليزية فقط. على سطح المكتب ، قد تحتاج إلى اللغة الروسية ، والتي ليس من الصعب إعدادها. أولاً ، دعنا نثبت ترجمات لبرامج النظام:
sudo apt-get install language-pack-ru
لنقم بإعداد الترجمة:
sudo update-locale LANG=ru_RU.UTF-8
يمكنك تحقيق نفس التأثير عن طريق تحرير / etc / default / locale يدويًا.
لتعريب GNOME و KDE ، يحتوي المستودع على language-pack-gnome-ru و language-pack-kde-ru - ستحتاج إليها إذا كنت ستستخدم برامج من بيئات سطح المكتب هذه. في XFCE ، يتم تثبيت الترجمات مع التطبيقات. ثم يمكنك تثبيت القواميس:
#
sudo apt-get install hunspell hunspell-ru
# LibreOffice
sudo apt-get install mythes-ru
# - DICT
sudo apt-get install mueller7-dict
بالإضافة إلى ذلك ، قد يلزم تثبيت الترجمات لبعض التطبيقات:
# Firefox
sudo apt-get install firefox firefox-locale-ru
# Thunderbird
sudo apt-get install thunderbird thunderbird-locale-ru
# LibreOffice
sudo apt-get install libreoffice libreoffice-l10n-ru libreoffice-help-ru
هذا يكمل إعداد بيئة سطح المكتب ، ويبقى تكوين خادم RDP.
تثبيت وتكوين خادم RDP
يوجد خادم Xrdp مجاني في مستودعات Ubuntu ، والذي سنستخدمه:
sudo apt-get install xrdp
إذا سارت الأمور على ما يرام ، يجب أن يبدأ الخادم تلقائيًا:
sudo systemctl status xrdp
يتم بدء تشغيل خادم Xrdp كمستخدم xrdp وبشكل افتراضي يأخذ /etc/ssl/private/ssl-cert-snakeoil.key شهادة ، والتي يمكنك استبدالها بشهادتك الخاصة. لقراءة الملف ، تحتاج إلى إضافة المستخدم إلى مجموعة ssl-cert:
sudo adduser xrdp ssl-cert
يمكن العثور على الإعدادات الافتراضية في الملف / etc / default / xrdp ، بينما توجد جميع ملفات تهيئة الخادم الأخرى في الدليل / etc / xrdp. المعلمات الرئيسية موجودة في ملف xrdp.ini ، والتي يمكن تركها دون تغيير. التكوين موثق جيدًا ، وهناك إدارات مقابلة في المجموعة:
man xrdp.ini
man xrdp
يبقى فقط تحرير البرنامج النصي /etc/xrdp/startwm.sh ، والذي يتم تنفيذه عند تهيئة جلسة المستخدم. أولاً ، لنقم بعمل نسخة احتياطية من البرنامج النصي من التوزيع:
sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.sh
لبدء تشغيل بيئة سطح المكتب XFCE ، تحتاج إلى برنامج نصي مشابه لما يلي:
#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4
يرجى ملاحظة: من الأفضل كتابة المسار الكامل للملفات القابلة للتنفيذ في البرامج النصية - وهذه عادة جيدة. لنجعل البرنامج النصي قابلاً للتنفيذ ويمكن اعتبار إعداد خادم Xrdp مكتملاً:
sudo chmod 755 /etc/xrdp/startwm.sh
نعيد تشغيل الخادم:
sudo systemctl restart xrdp
تكوين جدار الحماية
بشكل افتراضي ، يستمع Xrdp إلى منفذ TCP رقم 3389 على كافة الواجهات. بناءً على تكوين الخادم الظاهري ، قد تحتاج إلى تكوين جدار حماية Netfilter. في نظام Linux ، يتم ذلك عادةً باستخدام الأداة المساعدة iptables ، ولكن في Ubuntu ، من الأفضل استخدام ufw. إذا كان عنوان IP الخاص بالعميل معروفًا ، فسيتم التكوين باستخدام الأمر التالي:
sudo ufw allow from IP_Address to any port 3389
يمكنك السماح بالاتصالات من أي IP على النحو التالي:
sudo ufw allow 3389
يدعم RDP التشفير ، ولكن من الجيد كشف خادم Xrdp من الشبكات العامة. إذا لم يكن لدى العميل عنوان IP ثابت ، فيجب أن يستمع الخادم فقط إلى المضيف المحلي لزيادة الأمان. من الأفضل الوصول إليه من خلال نفق SSH ، والذي سيوجه حركة المرور بشكل آمن من جهاز الكمبيوتر العميل. استخدمنا أسلوبًا مشابهًا في المقالة السابقة لخادم VNC.
الاتصال بخادم RDP
للعمل مع بيئة سطح المكتب ، من الأفضل إنشاء مستخدم منفصل غير مميز:
sudo adduser rdpuser
دعنا نضيف المستخدم إلى مجموعة sudo حتى يتمكن من حل المهام المتعلقة بالإدارة. إذا لم تكن هناك حاجة ، يمكنك تخطي هذه الخطوة:
sudo gpasswd -a rdpuser sudo
يمكنك الاتصال بالخادم باستخدام أي عميل RDP ، بما في ذلك عميل Windows Remote Desktop Services المدمج. إذا كان Xrdp يستمع على واجهة خارجية ، فلا حاجة إلى إيماءات إضافية. يكفي تحديد عنوان VPS IP واسم المستخدم وكلمة المرور في إعدادات الاتصال. بعد الاتصال ، سنرى شيئًا كهذا:
بعد الإعداد الأولي لبيئة سطح المكتب ، سنحصل على سطح مكتب كامل. كما ترى ، فهي لا تستهلك الكثير من الموارد ، على الرغم من أن كل شيء يعتمد على التطبيقات المستخدمة.
إذا كان خادم Xrdp يستمع إلى المضيف المحلي فقط ، فسيتعين تعبئة حركة المرور على جهاز الكمبيوتر العميل في نفق SSH (يجب تشغيل sshd على VPS). في Windows ، يمكنك استخدام عميل SSH رسومي (على سبيل المثال ، PuTTY) ، وفي أنظمة UNIX ، تحتاج إلى الأداة المساعدة ssh:
ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip
بعد تهيئة النفق ، لن يتصل عميل RDP بعد الآن بالخادم البعيد ، بل بالمضيف المحلي.
مع الأجهزة المحمولة ، يكون الأمر أكثر صعوبة: يجب شراء عملاء SSH القادرون على رفع النفق ، بالإضافة إلى ذلك ، في iOS و iPadOS ، يكون عمل الخلفية لتطبيقات الطرف الثالث صعبًا بسبب تحسين الطاقة الجيد للغاية. على iPhone و iPad ، لن يعمل رفع النفق في تطبيق منفصل - فأنت بحاجة إلى تطبيق مدمج ، والذي هو نفسه قادر على إنشاء اتصال RDP عبر SSH. مثل ، على سبيل المثال ، مثل Remoter Pro .
مدير الجلسة وجلسات المستخدم
يتم تنفيذ إمكانية تعدد المستخدمين مباشرة في خادم Xrdp ولا تتطلب تكوينًا إضافيًا. بعد بدء الخدمة من خلال systemd ، يتم تشغيل عملية واحدة في الوضع الخفي ، والاستماع إلى المنفذ 3389 والاتصال عبر المضيف المحلي مع مدير الجلسة.
ps aux |grep xrdp
sudo netstat -ap |grep xrdp
عادةً ما يكون مدير الجلسة غير مرئي للمستخدمين ، لأنه يتم نقل تسجيل الدخول وكلمة المرور المحددين في إعدادات العميل إليه تلقائيًا. إذا لم يحدث ذلك أو حدث خطأ أثناء المصادقة ، فستظهر نافذة تسجيل دخول تفاعلية بدلاً من سطح المكتب.
يتم تسجيل البداية التلقائية لمدير الجلسة في الملف / etc / default / xrdp ، ويتم تخزين التكوين في /etc/xrdp/sesman.ini. بشكل افتراضي ، يبدو كما يلي:
[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh
[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false
[Sessions]
لا يمكنك ترك أي شيء هنا ، ما عليك سوى تعطيل تسجيل الدخول إلى الجذر (AllowRootLogin = false). لكل مستخدم قام بتسجيل الدخول إلى النظام ، يتم تشغيل عملية xrdp منفصلة: إذا قطعت الاتصال دون إنهاء الجلسة ، فستستمر عمليات المستخدم في العمل افتراضيًا ، ويمكنك إعادة الاتصال بالجلسة. يمكن تغيير الإعدادات في ملف /etc/xrdp/sesman.ini (قسم [الجلسات]).
تبديل تخطيطات لوحة المفاتيح
مع الحافظة ذات الوجهين ، لا تظهر المشكلات عادةً ، ولكن مع تخطيط لوحة المفاتيح الروسية ، سيتعين عليك التلاعب قليلاً (يجب تثبيت اللغة الروسية بالفعل ). دعنا نعدل إعدادات لوحة المفاتيح لخادم Xrdp:
sudo nano /etc/xrdp/xrdp_keyboard.ini
يجب إضافة الأسطر التالية إلى نهاية ملف التكوين:
[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru
[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru
يبقى حفظ الملف وإعادة تشغيل Xrdp:
sudo systemctl restart xrdp
كما ترى ، ليس من الصعب إعداد خادم RDP على Linux VPS ، وفي المقالة السابقة ناقشنا بالفعل إعداد VNC. بالإضافة إلى هذه التقنيات ، هناك خيار آخر مثير للاهتمام: نظام X2Go باستخدام بروتوكول NX 3 المعدل. سنتعامل معها في المنشور القادم.