برخی از کاربران VPS نسبتا ارزانی را با ویندوز برای اجرای خدمات دسکتاپ از راه دور اجاره می کنند. همین کار را می توان در لینوکس بدون میزبانی سخت افزار خود در مرکز داده یا اجاره سرور اختصاصی انجام داد. برخی از افراد به یک محیط گرافیکی آشنا برای آزمایش و توسعه یا یک دسکتاپ راه دور با یک کانال گسترده برای کار از دستگاه های تلفن همراه نیاز دارند. گزینه های زیادی برای استفاده از سیستم محاسبات شبکه مجازی (VNC) مبتنی بر پروتکل Remote FrameBuffer (RFB) وجود دارد. در این مقاله کوتاه به شما خواهیم گفت که چگونه آن را روی یک ماشین مجازی با هر Hypervisor پیکربندی کنید.
شرح:
انتخاب سرور VNC
سرویس VNC را می توان در سیستم مجازی سازی تعبیه کرد و هایپروایزر آن را با دستگاه های شبیه سازی شده متصل می کند و نیازی به پیکربندی اضافی نخواهد بود. این گزینه شامل سربار قابل توجهی است و توسط همه ارائه دهندگان پشتیبانی نمی شود - حتی در یک پیاده سازی با منابع کمتر، زمانی که به جای شبیه سازی یک دستگاه گرافیکی واقعی، یک انتزاع ساده شده (framebuffer) به ماشین مجازی منتقل می شود. گاهی اوقات یک سرور VNC به یک سرور X در حال اجرا گره می خورد، اما این روش برای دسترسی به یک ماشین فیزیکی مناسب تر است و در یک مجازی یکسری مشکلات فنی ایجاد می کند. ساده ترین راه برای نصب سرور VNC، استفاده از سرور X داخلی است. این نیازی به دستگاه های فیزیکی (آداپتور ویدئو، صفحه کلید و ماوس) یا شبیه سازی آنها با استفاده از Hypervisor ندارد و بنابراین برای هر نوع VPS مناسب است.
نصب و پیکربندی
ما به یک ماشین مجازی با سرور اوبونتو 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
اجرای آن به عنوان superuser ایده بدی است. ایجاد یک کاربر و گروه:
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
دستور باید چیزی شبیه به این نمایش دهد: "کشتن Xtigervnc process ID 18105... موفقیت!"
وقتی 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 برای استفاده رزمی مناسب نیست، بنابراین ما یک سرویس سیستم را پیکربندی میکنیم. دستورات به صورت root اجرا می شوند (ما از 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
در لینوکس، FreeBSD، OS X و سایر سیستمعاملهای مشابه یونیکس، یک تونل از رایانه مشتری با استفاده از ابزار ssh ساخته میشود (sshd باید روی سرور VNC اجرا شود):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
گزینه -L پورت 5901 اتصال راه دور را به پورت 5901 در لوکال هاست متصل می کند. گزینه -C فشرده سازی را فعال می کند و گزینه -N به ssh می گوید که دستور remote را اجرا نکند. گزینه -l ورود برای ورود از راه دور را مشخص می کند.
پس از راه اندازی تونل در رایانه محلی، باید مشتری VNC را راه اندازی کنید و با استفاده از رمز عبور مشخص شده قبلی برای دسترسی به سرور VNC، با میزبان 127.0.0.1:5901 (localhost:5901) ارتباط برقرار کنید. اکنون می توانیم از طریق یک تونل رمزگذاری شده با محیط دسکتاپ گرافیکی XFCE در VPS به صورت ایمن ارتباط برقرار کنیم. در تصویر، ابزار برتر در شبیه ساز ترمینال در حال اجرا است تا مصرف کم ماشین مجازی از منابع محاسباتی را نشان دهد. سپس همه چیز به برنامه های کاربر بستگی دارد.
شما می توانید یک سرور VNC را در لینوکس روی تقریباً هر VPS نصب و پیکربندی کنید. این نیازی به پیکربندی های گران قیمت و منابع فشرده با شبیه سازی آداپتورهای ویدئویی یا خرید مجوزهای نرم افزار تجاری ندارد. علاوه بر گزینه سرویس سیستم که در نظر گرفتیم، موارد دیگری نیز وجود دارد: راه اندازی در حالت daemon (از طریق /etc/rc.local) هنگامی که سیستم بوت می شود یا در صورت تقاضا از طریق inetd. مورد دوم برای ایجاد تنظیمات چند کاربره جالب است. Superserver اینترنت سرور VNC را راه اندازی می کند و کلاینت را به آن متصل می کند و سرور VNC صفحه جدیدی ایجاد می کند و جلسه را شروع می کند. برای احراز هویت درون آن، میتوانید از یک مدیر نمایشگر گرافیکی استفاده کنید (به عنوان مثال،
منبع: www.habr.com