ریموت دسکتاپ در لینوکس با xrdp

اگر با سیستم‌های ویندوزی کار کرده باشید حتما می‌دانید که تمامی نسخه‌های ویندوز قابلیت اختصاصی به نام Remote Desktop یاRDP دارند که بوسیله این قابلیت می‌توانید به‌صورت ریموت به صفحه دسکتاپ خود دسترسی داشته باشید. اما در سیستم‌های شبهه یونیکس به‌دلیل این‌که اغلب تنظیمات به‌صورت متنی انجام می‌شود، معمولا کاربران توسظ SSH می‌توانند به سیستم راه دور خود متصل شوند و کار خود را انجام دهند. حتما تا به حال برای شما پیش امده است که بخواهید در محیط شبکه از سیستم ویندوزی خود به صفحه دسکتاپ لینوکس خود به‌صورت ریموت دسترسی داشته باشید. اما همانطور که می دانید برخلاف ویندوز در سیستم عامل لینوکس به‌صورت پیش‌فرض از RDP پشتیبانی نمی‌شود ولی خوشبختانه توسط ابزاری به نام Xrdp این امکان در لینوکس نیز میسر می‌شود که در این مقاله به نصب و پیکربندی ان خواهیم پرداخت

پروژه Xrdp یک ابزار متن‌باز است که این امکان را به کاربران می‌دهد که بتوانند به دسکتاپ لینوکس خود از داخل سیستم عامل ویندوز دسترسی داشته باشند. این ابزار علاوه بر پشتیبانی از RDP Client های ویندوزی از سایرکلاینت‌های مشابه همچون FreeRDP, rdesktop, NeutrinoRDP نیز پشتیبانی می‌کند. همچنین در نسخه جدید این برنامه برای امنیت بیشتر از TLS نیز پشتیبانی می‌گردد.

برای نصب در سیستم‌های مبتنی بر Debian دستور زیر را وارد می‌کنیم:

apt install xrdp

برای نصب در سیستم‌های مبتنی بر Redhat دستورات زیر را وارد می‌کنیم:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum update && yum -y install xrdp tigervnc-server

سپس فایل زیر را ویرایش می‌کنیم

nano /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf 

و مانند زیر آن را تغییر می‌دهیم

polkit.addRule(function(action, subject) {
if ((action.id == “org.freedesktop.color-manager.create-device” || action.id == “org.freedesktop.color-manager.create-profile” || action.id == “org.freedesktop.color-manager.delete-device” || action.id == “org.freedesktop.color-manager.delete-profile” || action.id == “org.freedesktop.color-manager.modify-device” || action.id == “org.freedesktop.color-manager.modify-profile”) && subject.isInGroup(“{group}”))
{
return polkit.Result.YES;
}
});

و سپس سرویس xrdp را توسط دستور زیر restart می‌کنیم

systemctl restart xrdp

برای بررسی وضعیت xrdp می‌توانیم دستور زیر را بزنیم

systemctl status xrdp

که در صورتی که سرویس xrdp بدون مشکل و در حال اجرا باشد خروجی زیر را خواهیم دید

● xrdp.service - xrdp daemon
   Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: en
   Active: active (running) since Tue 2018-10-16 02:05:21 WAT; 11min ago
     Docs: man:xrdp(8)
           man:xrdp.ini(5)
 Main PID: 2654 (xrdp)
    Tasks: 1 (limit: 2290)
   CGroup: /system.slice/xrdp.service
           └─2654 /usr/sbin/xrdp

اگر بخواهیم با هر بار راه‌اندازی سیستم سرویس xrdp هم به‌صورت خودکار اجرا شود، دستور زیر را وارد می‌کنیم

systemctl enable xrdp

سرویس xrdp روی پورت 3389 کار می‌کند. پس برای این‌که بتوانیم به‌صورت ریموت به سیستم دسترسی داشته باشیم لازم است در فایروال سیستمی که xrdp روی ان نصب است پورت tcp/3389 را ازاد کنیم

در صورتی که از ufw برای مدیریت فایروال استفاده می‌کنید، می‌توانید دستور زیر را جهت ازاد شدن پورت tcp/3389 وارد کنید

ufw allow 3389/tcp

در صورتی که از firewalld برای مدیریت فایروال استفاده می‌کنید دستور زیر را جهت ازاد شدن پورت tcp/3389 وارد کنید

firewall-cmd --permanent --zone=public --add-port=3389/tcp
firewall-cmd --reload

حال می‌توانید از سیستم ویندوز به دسکتاپ لینوکس خود دسترسی داشته باشید. برای این منظور در سیستم‌عامل ویندوز ابزار Remote Desktop Connection را اجرا می‌کنیم

IMAGE_TITLE

ادرس IP سیستم مقابل و Username را مانند شکل زیر وارد می‌کنیم

IMAGE_TITLE

و سپس روی connect کلیک می‌نماییم

IMAGE_TITLE

پس از برقراری اتصال، کادر زیر نمایش داده خواهد شد که از شما نام کاربری و کلمه عبور را درخواست می‌کند. آن را وارد نموده و روی OK کلیک می‌کنیم.

IMAGE_TITLE

در صورتی که نام کاربری و رمز عبورتان صحیح باشد با صفحه لاگین مواجه خواهید شد که می‌توانید رمز عبورتان را وارد کنید و وارد دسکتاپ لینوکستان شوید.

IMAGE_TITLE