VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04

VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04
В مقاله قبلی ما در مورد اجرای یک سرور VNC بر روی یک ماشین مجازی از هر نوع بحث کردیم. این گزینه دارای معایب زیادی است که اصلی ترین آن الزامات بالای توان عملیاتی کانال های انتقال داده است. امروز سعی می کنیم از طریق RDP (پروتکل دسکتاپ از راه دور) به یک دسکتاپ گرافیکی در لینوکس متصل شویم. سیستم VNC مبتنی بر انتقال آرایه‌های پیکسل با استفاده از پروتکل RFB (Remote Framebuffer) است و RDP به شما اجازه می‌دهد تا دستورات گرافیکی پیچیده‌تر و دستورات سطح بالا را ارسال کنید. معمولاً برای میزبانی سرویس‌های دسکتاپ از راه دور در ویندوز استفاده می‌شود، اما سرورهایی برای لینوکس نیز در دسترس هستند.

شرح:

نصب محیط گرافیکی
روسی سازی سرور و نصب نرم افزار
نصب و پیکربندی سرور RDP
راه اندازی فایروال
اتصال به سرور RDP
Session Manager و User Sessions
تغییر طرح بندی صفحه کلید

نصب محیط گرافیکی

ما یک ماشین مجازی با سرور اوبونتو 18.04 LTS با دو هسته محاسباتی، چهار گیگابایت رم و یک هارد دیسک بیست گیگابایتی (HDD) خواهیم گرفت. پیکربندی ضعیف‌تر برای دسکتاپ گرافیکی مناسب نیست، اگرچه این بستگی به وظایفی دارد که حل می‌شوند. فراموش نکنید که از کد تبلیغاتی Habrahabr10 برای دریافت 10 درصد تخفیف در سفارش خود استفاده کنید.

VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04
نصب محیط دسکتاپ با تمام وابستگی ها با دستور زیر انجام می شود:

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 به دست آورد.

برای بومی سازی گنوم و 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 آزادانه دارند که ما از آن استفاده خواهیم کرد:

sudo apt-get install xrdp

اگر همه چیز خوب پیش رفت، سرور باید به طور خودکار شروع به کار کند:

sudo systemctl status xrdp

VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04
سرور Xrdp با حقوق کاربر xrdp اجرا می‌شود و به‌طور پیش‌فرض گواهی /etc/ssl/private/ssl-cert-snakeoil.key را می‌گیرد که می‌تواند با گواهینامه شما جایگزین شود. برای دسترسی به خواندن فایل، باید کاربر را به گروه ssl-cert اضافه کنید:

sudo adduser xrdp ssl-cert

تنظیمات پیش‌فرض را می‌توان در فایل /etc/default/xrdp پیدا کرد و همه فایل‌های پیکربندی سرور دیگر در فهرست /etc/xrdp قرار دارند. پارامترهای اصلی در فایل xrdp.ini هستند که نیازی به تغییر ندارد. پیکربندی به خوبی مستند شده است، و manpage های مربوطه شامل:

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 را پیکربندی کنید. در لینوکس این کار معمولا با استفاده از ابزار iptables انجام می شود، اما در اوبونتو بهتر است از 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

VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04
بیایید کاربر را به گروه sudo اضافه کنیم تا بتواند وظایف مربوط به مدیریت را انجام دهد. اگر چنین نیازی وجود ندارد، می توانید این مرحله را نادیده بگیرید:

sudo gpasswd -a rdpuser sudo

می توانید با استفاده از هر سرویس گیرنده RDP، از جمله سرویس گیرنده داخلی Windows Remote Desktop Services، به سرور متصل شوید. اگر Xrdp به رابط خارجی گوش می دهد، هیچ اقدام اضافی مورد نیاز نخواهد بود. کافی است آدرس IP VPS، نام کاربری و رمز عبور را در تنظیمات اتصال مشخص کنید. پس از اتصال، چیزی شبیه به این را خواهیم دید:

VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04
پس از راه اندازی اولیه محیط دسکتاپ، یک دسکتاپ تمام عیار خواهیم داشت. همانطور که می بینید، منابع زیادی را مصرف نمی کند، اگرچه همه چیز به برنامه های مورد استفاده بستگی دارد.

VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04
اگر سرور Xrdp فقط به لوکال هاست گوش می دهد، ترافیک کامپیوتر مشتری باید در یک تونل SSH بسته بندی شود (sshd باید روی VPS اجرا شود). در ویندوز، می توانید از یک کلاینت گرافیکی SSH (به عنوان مثال، PuTTY) استفاده کنید، و در سیستم های یونیکس به ابزار ssh نیاز دارید:

ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip

پس از راه اندازی تونل، مشتری RDP دیگر به سرور راه دور متصل نمی شود، بلکه به میزبان محلی متصل می شود.

با دستگاه های تلفن همراه دشوارتر است: کلاینت های SSH که قادر به بالا بردن تونل هستند باید خریداری شوند، و در iOS و iPadOS، عملکرد پس زمینه برنامه های شخص ثالث به دلیل بهینه سازی بسیار خوب مصرف انرژی دشوار است. در آیفون و آی‌پد، نمی‌توانید یک تونل در یک برنامه جداگانه ایجاد کنید؛ به برنامه‌ای نیاز دارید که بتواند یک اتصال RDP را از طریق SSH برقرار کند. مانند مثلا Remoter Pro.

Session Manager و User Sessions

قابلیت کار چند کاربره مستقیماً در سرور Xrdp پیاده سازی می شود و نیازی به تنظیمات اضافی ندارد. پس از راه اندازی سرویس از طریق systemd، یک فرآیند در حالت daemon اجرا می شود، به پورت 3389 گوش می دهد و از طریق localhost با مدیر جلسه ارتباط برقرار می کند.

ps aux |grep xrdp

VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04

sudo netstat -ap |grep xrdp

VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04
Session manager معمولا برای کاربران قابل مشاهده نیست، زیرا لاگین و رمز عبور مشخص شده در تنظیمات کلاینت به صورت خودکار به آن منتقل می شود. اگر این اتفاق نیفتد یا در حین احراز هویت خطایی رخ داد، یک پنجره ورود تعاملی به جای دسکتاپ ظاهر می شود.

VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04
راه اندازی خودکار Session Manager در فایل /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 (بخش [Sessions]) تغییر داد.

تغییر طرح بندی صفحه کلید

معمولاً با کلیپ بورد دو طرفه مشکلی وجود ندارد، اما با چیدمان صفحه کلید روسی باید کمی بازی کنید (محل زبان روسی باید از قبل باشد. نصب شده است). بیایید تنظیمات صفحه کلید سرور 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 روی VPS لینوکس دشوار نیست، اما مقاله قبلی ما قبلاً در مورد راه اندازی VNC بحث کرده ایم. علاوه بر این فناوری ها، گزینه جالب دیگری نیز وجود دارد: سیستم X3Go با استفاده از پروتکل اصلاح شده NX 2. در نشریه بعدی به آن خواهیم پرداخت.

VPS در لینوکس با رابط گرافیکی: راه اندازی یک سرور RDP در اوبونتو 18.04

منبع: www.habr.com