مقاله وبلاگ

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

شهریور ۲۶, ۱۳۹۸, نویسنده: ۰ نظر

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

پروتکل VNC یا Virtual Network Computing روش ارتباطی دو طرفه بین سرور و کلاینت بوده که امکان مدیریت کامل منابع سرور را به صورت گرافیکی در اختیار کاربر قرار می‌دهد. سرور VNC تمام وقایع صفحه کلید و ماوس را از رایانه مشتری به رایانه سرور منتقل می کند. با استفاده از VNC مدیریت پرونده ها، نرم افزارها و تنظیمات سیستم آسان تر میشود. در این قسمت به شما آموزش نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها را میدهیم.

پیش نیازها:

سیستم عامل: CentOS 7

منابع مورد نیاز : رم 2 گیگ

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

مراحل نصب و پیکربندی VNC

قدم اول : ایجاد دو حساب کاربری

برای پیکربندی vnc در لینوکس اول دو حساب  ایجاد میکنیم . این دو حساب با VNC به CentOS 7 server متصل خواهند شد .

حساب ها عبارتند از :

joevnc
janevnc

از دستور زیر برای ایجاد حساب joevnc استفاده کنید :

sudo useradd -c “User Joe Configured for VNC Access” joevnc

حالا از دستور زیر برای تنظیم پسورد ورود  حسابی که ایجاد کردیم ، استفاده کنید :

sudo passwd joevnc

خروجی ای به شکل زیر خواهید دید ، بعد از تنظیم رمز شما آماده ی ورود به سرور با این حساب هستید :

.Changing password for user joevnc
:New password
:Retype new password
.password: all authentication tokens updated successfully

حالا می خواهیم اکانت  janevnc را ایجاد کنیم :

sudo useradd -c “User Jane Configured for VNC Access” janevnc

برای janevnc پسورد تنظیم می کنیم :

sudo passwd janevnc

قدم دوم : نصب GNOME Desktop

حالا می خواهیم GNOME desktop را نصب کنیم . GNOME  یک نرم افزار آزاد و متن باز هست که یک محیط دسکتاپ بسیار محبوب است .

محیط دسکتاپ دیگری مانند KDE وجود دارد، اما GNOME محبوب تر است. ما از GNOME برای ارتباط با سرور به صورت گرافیکی استفاده می کنیم .

sudo yum groupinstall -y “GNOME Desktop”

بسته به سرعت شبکه شما، این دستور می تواند چند دقیقه طول بکشد.

پس از اینکه بسته نصب شد سرور را ریبوت کنید :

sudo reboot

عیب یابی سروری که در فاز بوت شدن گیر کرده است :

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

Initial setup of CentOS Linux 7 (core)
(1) [!] License information (Licence not accepted)
:Please make your choice from above [‘q’ to quit | ‘c’ to continue | ‘r’ to refresh]

برای بازگشت به قبل ، 1 (مجوز به عنوان خوانده شده)، سپس 2 (قبول مجوز)، و سپس C (برای ادامه)را بزنید . شما ممکن است مجبورشوید  C را دو یا چند بار فشار دهید. تصویر زیر این مورد  را نشان می دهد:

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

اگر شما چنین خطایی ندیدید، میتوانید به مرحله ی بعدی بروید .

قدم سوم – نصب TigerVNC Server

TigerVNC  یک نرم افزار است که اجازه اتصال  remote desktop را میدهد.

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

sudo yum install -y tigervnc-server

پس از نصب خروجی ای مانند زیر مشاهده خواهید کرد :

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
. . .
Running transaction
Installing : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64
1/1
Verifying  : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64
1/1
:Installed
tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7
!Complete

تا این مرحله ما  VNC server را داریم و GNOME desktop را نصب کردیم و دو حساب را ایجاد کرده ایم که میتوانند با استفاده از VNC به سرور متصل شوند.

 قدم چهارم- کانفیگ کردن VNC Service برای دو حساب

VNC  بعد از نصب برای اولین بار به طور خودکار شروع نمی شود. برای بررسی نصب VNC ، دستور زیر را اجرا کنید :

sudo systemctl status [email protected]:.service

خروجی زیر را خواهید دید :

[email protected]:.service – Remote desktop service (VNC)
Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled)
Active: inactive (dead)

شما هم چنین میتوانید دستور زیر را اجرا کنید :

sudo systemctl is-enabled [email protected]

دستور بالا باید خروجی زیر را نشان دهد :

disabled

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

CentOS 7  از daemon systemd استفاده می کند تا خدمات دیگری را انجام دهد . هر سرویسی که به صورت native تحت systemd  اجرا می شود، یک فایل واحد دارد که توسط yum installer در دایرکتوری/lib/systemd/system قرار گرفته است.

فرایند هایی که هنگام بوت شدن به طور خودکار انجام می شوند، پیوند هایی دارد به فایل واحد سیستم که در مسیر /etc/systemd/system/ قرار دارد .

در مورد ما یک فایل واحد خدمات عمومی در پوشه / lib / systemd / system / ایجاد شده است، اما در مسیر / etc / systemd / system / هیچ پیوندی ایجاد نشده است.

با دستور زیر می توان این مورد را آزمایش کنید :

sudo ls -l /lib/systemd/system/vnc*

خروجی ای که مشاهده خواهید کرد به شکل زیر خواهد بود :

-rw-r–r–. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]

حالا با دستور زیر برای آدرس /etc/systemd/system/ این مورد را بررسی میکنیم :

sudo ls -l /etc/systemd/system/*.wants/vnc*

اینبار این مورد وجود ندارد :

ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory

بنابراین اولین قدم برای ما ایجاد دو نمونه ی جداگانه VNCبرای دو حساب است .

برای این کار باید دو نسخه از پرونده ی VNC در /etc/system/system ایجاد کنیم .

در کد های زیر اینکار را با نام های مختلف انجام می دهیم :

sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/[email protected]:4.service
sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/[email protected]:5.service

شاید این سوال پیش بیاید که چرا در نامی که در کد قرار داده ایم دو عدد اضافه کرده ایم ؟

VNC  به  صورت پیش فرض در پورت 5900 اجرا می شود .با توجه به اینکه هر کاربر سرور را با VNC مربوط به خود باز میکند، باید هر کاربر با پورت جداگانه به VNC متصل شود .اضافه کردن یک عدد در نام فایل به VNC می گوید که سرویس را به عنوان زیرپورت 5900 اجرا کند.

در اینجا VNC مربوط به  joevnc تحت پورت 5904 و VNC مربوط به janevnc تحت پورت 5905 اجرا خواهد شد .

حالا باید فایل واحد سرویس را ویرایش کنیم .

فایل /etc/systemd/system/[email protected]:4.service را با  vi editor یا nano باز کنید :

sudo vi /etc/systemd/system/[email protected]:4.service

حالا باید در قسمت  [Service]  فایل تغییرات زیر را اعمال کنید :

به جای <USER> کلمه ی joevnc را جایگزین کنید .

هم چنین عبارت -geometry 1280×1024 را در پایان پارامتر ExecStart  قرار دهید. این مورد فقط اندازه ی صفحه نمایش VNC را تنظیم می کند .

شما در مجموع دو خط را تغییر خواهید داد ، در زیر فایل ویرایش شده را میتوانید ببینید :

# The vncserver service unit file
#
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/[email protected]:<display>.service
# 2. Edit <USER> and vncserver parameters appropriately
#   (“runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2”)
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable [email protected]:<display>.service`
#
. . .
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
ExecStart=/sbin/runuser -l joevnc -c “/usr/bin/vncserver %i -geometry 1280×1024”
PIDFile=/home/joevnc/.vnc/%H%i.pid
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
[Install]
WantedBy=multi-user.target

جهت انجام اقدامات بعدی پیکربندی vnc در لینوکس فایل را ذخیره کنید و از ویرایشگر خارج شوید .

به طور مشابه فایل /etc/systemd/system/[email protected]:5.service را نیز باید ویرایش کنید :

sudo vi /etc/systemd/system/[email protected]:5.service

در ادامه فقط بخش [Service] را برایتان قرار داده ایم :

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
:’ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 ||
“ExecStart=/sbin/runuser -l janevnc -c “/usr/bin/vncserver %i -geometry 1280×1024
PIDFile=/home/janevnc/.vnc/%H%i.pid
:’ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 ||

در ادامه باید دستور زیر را اجرا کنید تا systemd daemon بارگزاری شود و اطمینان حاصل کنید که VNC برای دو کاربر در زمان بوت شروع می شود:

sudo systemctl daemon-reload

ابتدا بایستی سرور برای حساب اول فعال شود  :

sudo systemctl enable [email protected]:4.service

خروجی :

ln -s ‘/etc/systemd/system/[email protected]:4.service’ ‘/etc/systemd/system/multi-user.target.wants/[email protected]:4.service’

فعال سازی برای حساب دوم  :

sudo systemctl enable [email protected]:5.service

خروجی :

ln -s ‘/etc/systemd/system/[email protected]:5.service’ ‘/etc/systemd/system/multi-user.target.wants/[email protected]:5.service’

حالا شما دو VNC برای دو کاربر پیکربندی کرده اید .

قدم پنجم – کانفیگ فایروال

حالا باید فایروال را به شکلی کانفیگ کنیم تا فقط به پورت های 5904  و 5905 اجازه دهد .

معمولا فایروال به صورت دیفالت هنگام بوت شدن سرور فعال می شود اما باید حتما این مورد را چک کنیم :

sudo firewall-cmd –state

و باید حتما خروجی زیر را بگیریم :

running

اگر خروجی “not running” دریافت کردیم با اجرای دستور زیر حتما فایروال فعال خواهد شد :

sudo systemctl start firewalld

اکنون قوانین مربوط به پورت های 5904 و 5905 را اضافه کنید:

sudo firewall-cmd –permanent –zone=public –add-port=5904-5905/tcp

خروجی :

success

حالا باید دستور بارگزاری فایروال را اجرا کنید :

sudo firewall-cmd –reload

خروجی :

success

قدم ششم- ست کردن پسورد برای VNC

در این مرحله باید برای کاربران پسورد های ورود به VNC را تنظیم کنیم. این پسورد کلمه عبور کاربران لینوکس نیست ، بلکه پسوردی برای ورود به VNC است .

یکبار دیگر به عنوان joevnc  وارد SSH شویم :

ssh [email protected]_server_ip

دستور زیر را اجرا کنید :

vncserver

همانطور که در خروجی زیر مشاهده میکنید ، سرور از joevnc برای تنظیم یک رمز عبور VNC درخواست خواهد کرد. پس از تایپ کردن در رمز عبور، برنامه همچنین تعدادی از فایل های ایجاد شده در دایرکتوری خانگی کاربر را نشان می دهد.

.You will require a password to access your desktops
:Password
:Verify
xauth:  file /home/joevnc/.Xauthority does not exist
New ‘localhost.localdomain:1 (joevnc)’ desktop is localhost.localdomain:1
Creating default startup script /home/joevnc/.vnc/xstartup
Starting applications specified in /home/joevnc/.vnc/xstartup
Log file is /home/joevnc/.vnc/localhost.localdomain:1.log

حالا یک SSH دیگر باز کنید و به عنوان janevnc وارد شوید . در اینجا هم VNC را باید راه اندازی کنید و رمز عبور را برای janevnc تنظیم کنید :

vncserver

باید خروجی های مشابهی نیز برای  janevnc ببینید .

در پایان باید از SSH اصلی سرویس را ریلود کنید :

sudo systemctl daemon-reload
sudo systemctl restart [email protected]:4.service
sudo systemctl restart [email protected]:5.service

قدم هفتم – اتصال به سرور از راه دور با استفاده از  VNC client

فرض می کنیم کاربران joevnc و janevnc در حال تلاش برای اتصال به سرور CentOS 7 از رایانه های خود هستند.

آنها هر کدام به یک سرویس گیرنده VNC برای ویندوز نیاز دارند تا به دسکتاپ از راه دور وارد شوند. این کلاینت مانند  PuTTY است، با این تفاوت که خروجی گرافیکی را نشان می دهد. VNC client های متفاوتی وجود دارد اما موردی که ما استفاده می کنیم ،  RealVNC است .

وقتی VNC Viewer شروع به کار می کند ، یک دیالوگ باکس شبیه به زیر نمایش داده می شود :

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

در قسمت  VNC Server، آدرس IP سرور CentOS 7 خود را اضافه کنید. شماره پورت 5904  را بعد از IP سرور با استفاده از” : “مشخص کنید. ما از 5904 استفاده کردیم زیرا این سرویس VNC برای joevnc است.

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

ما همچنین تصمیم گرفتیم که VNC Viewer روش رمزگذاری را انتخاب کند.  این گزینه فقط رمز عبور ارسال شده در شبکه را رمزگذاری می کند. هر گونه ارتباط بعدی با سرور، رمزگذاری نخواهد شد. بعد از اینکه دکمه کانکت را زدیم ، یک پیغام اخطار به شکل زیر نشان می دهد .

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

پس از اینکه هشدار را بپذیرید ، در مرحله ی بعد فرم وارد کردن پسورد نمایش داده می شود .

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

رمز ورود VNC joevnc را که قبلا تنظیم کرده اید وارد کنید.

یک پنجره جدید نشان می دهد که دسکتاپ GNOME برای سرور Remote CentOS شما است :

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

نصب VNC در لینوکس CentOS و نحوه اتصال کلاینت ها

برای دیدن آموزش اتصال سرور به کنسول VNC کلیک کنید

مریم ممتاز

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.