مقدمه” VNC یا Virtual Network Computing بستری است که کاربران را قادر می سازد تا به یک سیستم کامپیوتری از راه دور متصل شوند و از رابط کاربری گرافیکی (GUI) استفاده کنند. این دقیقا شبیه به کنترل از راه دور یک برنامه است، که کلید های کامپیوتر و کاری که ما با ماوس و صفحه کلید انجام می دهیم به کامپیوتر از راه دور منتقل می شود. کانفیگ VNC در لینوکس کار سختی نیست! VNC همچنین کلیپ بورد را بین دو کامپیوتر به اشتراک می گذارد و بر پایه ی مدل سرویس گیرنده است. سرور VNC بر روی یک کامپیوتر راه دور اجرا می شود و و درخواست های مشتری را انجام می دهد. “
|
آموزش نصب و فعالسازی VNC
پیش نیازها:
سیستم عامل: CentOS 7
منابع مورد نیاز: رم ۲ گیگ
۱. ایجاد دو حساب کاربری
برای پیکربندی سرور مجازی VNC در لینوکس اول دو حساب ایجاد می کنیم. این دو حساب با VNC به CentOS 7 server متصل خواهند شد.
حساب ها عبارتند از :
- joevnc
- janevnc
از دستور زیر برای ایجاد حساب joevnc استفاده کنید:
sudo useradd -c “User Joe Configured for VNC Access” joevnc
حالا از دستور زیر برای تنظیم پسورد ورود حسابی که ایجاد کردیم، استفاده کنید:
sudo passwd joevnc
حالا می خواهیم اکانت janevnc را ایجاد کنیم:
sudo useradd -c “User Jane Configured for VNC Access” janevnc
برای janevnc پسورد تنظیم می کنیم:
sudo passwd janevnc
۲. نصب GNOME Desktop
” GNOME یک نرم افزار آزاد و متن باز هست که یک محیط دسکتاپ بسیار محبوب می باشد. “
|
محیط دسکتاپ دیگری مانند KDE وجود دارد، اما GNOME محبوب تر است. ما در این آموزش از GNOME برای ارتباط با سرور به صورت گرافیکی استفاده می کنیم.
sudo yum groupinstall -y “GNOME Desktop”
بسته به سرعت شبکه شما، این دستور می تواند چند دقیقه طول بکشد.
پس از اینکه بسته نصب شد سرور را ریبوت کنید:
sudo reboot
۳. نصب TigerVNC Server
” TigerVNC یک نرم افزار است که اجازه اتصال Remote Desktop را می دهد. “
|
با استفاده از دستور زیر می توانید این نرم افزار را نصب کنید:
sudo yum install -y tigervnc-server
تا این مرحله ما VNC server را داریم و GNOME desktop را نصب کردیم و دو حساب را ایجاد کرده ایم که می توانند با استفاده از VNC به سرور متصل شوند.
کانفیگ کردن VNC Service برای دو حساب
VNC بعد از نصب برای اولین بار به طور خودکار شروع نمی شود. برای بررسی نصب VNC، دستور زیر را اجرا کنید:
sudo systemctl status vncserver@:.service
شما همچنین می توانید دستور زیر را اجرا کنید:
sudo systemctl is-enabled vncserver@.service
دستور بالا باید خروجی زیر را نشان دهد:
disabled
علت غیرفعال بودن آن این است که هر کاربر یک نمونه جداگانه از Daemon VNC را شروع می کند. به عبارت دیگر، 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/vncserver@.service
حالا با دستور زیر برای آدرس /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/vncserver@.service /etc/systemd/system/vncserver@:4.service
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:5.service
حالا باید فایل واحد سرویس را ویرایش کنیم..
فایل /etc/systemd/system/vncserver@:4.service را با vi editor یا nano باز کنید:
sudo vi /etc/systemd/system/vncserver@: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/vncserver@:<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 vncserver@:<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/vncserver@:5.service را نیز باید ویرایش کنید:
sudo vi /etc/systemd/system/vncserver@: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 vncserver@:4.service
فعال سازی برای حساب دوم:
sudo systemctl enable vncserver@: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 joevnc@your_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 vncserver@:4.service
sudo systemctl restart vncserver@:5.service
اتصال به سرور از راه دور با استفاده از VNC client
فرض می کنیم کاربران joevnc و janevnc در حال تلاش برای اتصال به سرور CentOS 7 از رایانه های خود هستند.
هر کدام به یک سرویس گیرنده VNC برای ویندوز نیاز دارند تا به دسکتاپ از راه دور وارد شوند. این کلاینت مانند PuTTY است، با این تفاوت که خروجی گرافیکی را نشان می دهد. VNC client های متفاوتی وجود دارد اما موردی که ما در این آموزش استفاده می کنیم، RealVNC است.
وقتی VNC Viewer شروع به کار می کند، یک باکس شبیه به تصویر زیر نمایش داده می شود:
در قسمت VNC Server، آدرس IP سرور CentOS 7 خود را اضافه کنید. شماره پورت 5904 را بعد از IP سرور با استفاده از ” : “ مشخص کنید. ما در این آموزش از 5904 استفاده کردیم زیرا این سرویس VNC برای joevnc است.
همچنین تصمیم گرفتیم که VNC Viewer روش رمزگذاری را انتخاب کند. این گزینه فقط رمز عبور ارسال شده در شبکه را رمزگذاری می کند. هر گونه ارتباط بعدی با سرور، رمزگذاری نخواهد شد.
بعد از اینکه دکمه کانکت را زدیم، یک پیغام اخطار به شکل زیر نشان می دهد:
پس از اینکه هشدار را بپذیرید، در مرحله بعد فرم وارد کردن پسورد نمایش داده می شود.
رمز ورود VNC joevnc را که قبلا تنظیم کرده اید وارد کنید.
یک پنجره جدید نشان می دهد که دسکتاپ GNOME برای سرور Remote CentOS شما است:
امیدواریم این مطلب آموزشی برایتان مفید واقع شده باشد.