صبحانه کاری برای شروع رفاقت های کاری و تخصصی

راهنمای تصویری نصب VNC روی CentOS + نحوه اتصال

نصب VNC Viewer روی CentOS
Avatar
نویسنده: دریا آزادخواه
یکشنبه 6 خرداد 1403
مطالعه: ۱۴ دقیقه ۰ نظر ۲۴۵ بازدید

نصب VNC‌ روی CentOS از جمله کارهایی است که برای کنترل یک کامپیوتر از راه دور می‌توانید انجام دهید. مثلاً اگر یک سرور مجازی داشته باشید، برای مدیریت و دسترسی به آن، می‌توانید از VNC استفاده کنید. در این مطلب از آموزش لینوکس و آموزش CentOS بلاگ پارس پک نحوه‌ نصب VNC در CentOS را به‌صورت کامل توضیح داده‌ایم؛ پس تا پایان با ما همراه باشید.

پیش‌نیازهای نصب VNC‌ روی CentOS

پیش‌نیازهای نصب و کانفیگ VNC در CentOS عبارت‌اند از:

  • حداقل ۲ گیگابایت رم روی سرور
  • کاربر با سطح دسترسی Sudo
  • سرور لینوکسی با سیستم‌عامل سنت‌او‌اس۷ (۶۴ بیت)
  • محیط دسکتاپ GNOME نصب شده روی سرور

نکته:

بهتر است بدانید که اکثر کاربرانی که تا قبل از این در حال استفاده از توزیع CentOS بودند، به‌دلیل آپدیت نشدن آن، در حال مهاجرت به توزیع‌های جدیدتر مثلِ Almalinux 8 هستند. این توزیع دقیقاً مشابه با CentOS و بر پایه‌ی RedHat است.

نصب ریموت دسکتاپ VNC روی CentOS

برای فعال‌سازی نصب VNC روی CentOS مراحل زیر را دنبال کنید:

گام اول: ساخت User Accountهای موردنیاز

قبل از اینکه به سراغ نصب ریموت دسکتاپ VNC‌ روی CentOS بروید، ابتدا باید دو اکانت کاربری (User Account) بسازید. با استفاده از این دو اکانت می‌توانید از کلاینت‌های VNC به سرور CentOS 7 متصل شوید. ما در اینجا از دو اسم فرضی Parspack1 و Parspack2 برای ساخت اکانت‌ها استفاده کرده‌ایم.

با استفاده از دستور زیر، اولین اکانت را بسازید:

sudo useradd -c "User parspack Configured for VNC Access" parspack1

با استفاده از دستور passwd‌ برای این اکانت، یک رمز عبور تعریف کنید:

sudo passwd parspack1

خروجی این دستور، مشابه با نمونه‌ی زیر است. در این قسمت باید رمز عبور را وارد کنید:

Output

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

دقیقاً همین مراحل را برای User دوم هم انجام دهید. در مراحل بعدی نحوه نصب VNC Server در سنت او اس را بررسی می‌کنیم. البته این نکته را هم در نظر داشته باشید که چون هدف ما از این مطلب، آموزش نصب VNC روی CentOS است، مراحل نصب GNOME را توضیح نداده‌ایم.

خرید سرور لینوکس

گام دوم: نصب TigerVNC

TigerVNC‌ نرم‌افزاری است که امکان ایجاد یک اتصال دسکتاپ به‌صورت ریموت را به کاربر می‌دهد و این همان چیزی است که برای نصب VNC‌ روی CentOS به آن نیاز داریم. برای شروع نصب این نرم‌افزار، از دستور زیر استفاده کنید:

sudo yum install -y tigervnc-server

خروجی این دستور، باید چیزی شبیه به نتیجه‌ی زیر باشد:

Output

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‌روی لینوکس CentOS به همین سادگی تمام شد. حالا شما هم اکانت‌های موردنیازتان را دارید و هم TigerVNC‌ را نصب کرده‌اید.

گام سوم: پیکربندی VNC‌ در CentOS برای دو کلاینت

بعد از نصب VNC روی CentOS، این نرم‌افزار به‌صورت اتوماتیک فعال نمی‌شود. با دستور زیر، این مورد را بررسی کنید:

sudo systemctl status vncserver@:.service

دراین‌صورت خروجی زیر به شما نشان داده می‌شود:

Output

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

همچنین می‌توانید از دستور زیر استفاده کنید:

sudo systemctl is-enabled [email protected]

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

Output

disabled

اینکه چرا VNC با وجود نصب غیرفعال است، ماهیتی فنی دارد. موضوع این است که VNC به‌عنوان فرایندی واحد اجرا نمی‌شود که به هر درخواست ارسال شده از طرف کاربر پاسخ دهد. بنابراین هر یک از کاربران که بخواهد از طریق VNC کانکشن خود را برقرار کند، حتماً باید یک دیمون (Daemon) جدید را شروع کند. البته ادمین سیستم هم می‌تواند این فرایند را اتوماتیک کند.

به‌عنوان اطلاعات بیشتر، لازم است بدانید که CentOS از Systemd برای راه‌اندازی سرویس‌های دیگر استفاده می‌کند و هر سرویسی که به‌صورت Systemd اجرا می‌شود، یک فایل یونیت Service دارد که توسط yum در فولدر lib/systemd/system قرار داده می‌شود.

حالا مسئله اینجاست که فرایندهایی که در زمان راه‌اندازی به‌صورت خودکار شروع می‌شوند، یک لینک به همین فایل یونیت Service دارند که در زمان بوت، به‌صورت اتوماتیک شروع می‌شوند و در فولدر /etc/systemd/system/ قرار می‌گیرند.

نکته: فایل‌های یونیت ابزاری هستند که به شما امکان می‌دهند سرویس‌های مختلف را به‌راحتی راه‌اندازی، متوقف و یا دوباره راه‌اندازی کنید.

اجازه دهید به پروژه‌ی خودمان برگردیم. بعد از نصب VNC روی CentOS، یک فایل یونیت Service در فولدر /lib/systemd/system/ ایجاد شده است، اما خبری از لینکی که در موردش صحبت کردیم، نیست. این موضوع را با استفاده از دستور زیر می‌توانید متوجه شوید:

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

بعد از اینکه این دستور را وارد کردید، خروجی زیر به شما نشان داده می‌شود:

Output

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

حالا فولدر lib/systemd/system را دستور زیر بررسی کنید:

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

پیغام زیر به این معنی است که فولدری که به‌دنبالش هستید، وجود ندارد:

Output

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

حالا که متوجه مشکل شدید، راحت‌تر می‌توانید آن را رفع کنید. مراحل زیر به شما کمک می‌کنند تا پیکربندی VNC در لینوکس CentOS را انجام دهید:

۱. به‌عنوان اولین مرحله، لازم است دو نمونه‌ی جدید از سرور VNC را برای دو کاربر ساخته شده، راه‌اندازی کنید. برای این منظور، باید دو کپی از فایل یونیت Service مربوط به VNC ساخته و آن را در فولدر /etc/system/system قرار دهید. با استفاده از کُدهای زیر، دو کپی با نام‌های مختلف ساخته می‌شود:

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

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

نکته: در کُدهای بالا، می‌بینید که دو عدد به همراه علامت «:» را به دستور اضافه کرده‌ایم. ما این کار را به‌دلیل یک نکته‌ی کوچک اما کاملاً مهم انجام دادیم. موضوع این است که VNC به‌صورت پیش‌فرض روی پورت ۵۹۰۰ اجرا می‌شود و چون هر کاربر سرور VNC خودش را اجرا می‌کند، این کانکشن باید با شماره پورت اختصاصی خودش انجام شود.

اضافه کردن یک عدد به اسم فایل در تنظیم VNC در لینوکس CentOS، به این معنی است که آن پورت به‌عنوان یک پورت فرعی در نظر گرفته شود. پس با این دستورات، VNC اول روی پورت ۵۹۰۴ (۴+۵۹۰۰) و دومی روی پورت ۵۹۰۵ (۵+۵۹۰۰) اجرا می‌شود.

۲. حالا باید فایل یونیت Service را برای هر کدام از کلاینت‌ها ویرایش کنید. برای این کار، فایل /etc/systemd/system/vncserver@:4.service را با یک ویرایشگر متنی باز کنید:

sudo vi /etc/systemd/system/vncserver@:4.service

۳. در این مرحله باید دو تغییر را در قسمت Service این فایل ایجاد کنید. ابتدا قسمت <USER> را با اسم کاربرانی که ایجاد کرده‌اید جایگزین کرده و سپس پارت -geometry 1280×1024 را در انتهای پارامتر ExecStart اضافه کنید. این پارت به VNC می‌گوید که اندازه‌ی اسکرین برای شروع، چقدر باید باشد. بنابراین شما برای این مرحله از تنظیم VNC در لینوکس CentOS، در مجموع دو خط را ویرایش کرده‌اید. نمونه‌ ویرایش شده‌ فایل هم به‌صورت زیر است:

# 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 parspack1 -c "/usr/bin/vncserver %i -geometry 1280x1024" 

PIDFile=/home/parspack1/.vnc/%H%i.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'




[Install]

WantedBy=multi-user.target

تغییرات را ذخیره کنید و فایل را ببندید.

۴. همین کار را باید برای کلاینت دوم (که در این مثال نام آن parspack2) بود، انجام دهید. قسمت ویرایش شده برای این کلاینت هم به‌شکل زیر است:

[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 parspack2 -c "/usr/bin/vncserver %i -geometry 1280x1024" 

PIDFile=/home/parspack2/.vnc/%H%i.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'




[Install]

WantedBy=multi-user.target

تغییرات را در این فایل هم ذخیره کنید و فایل را ببندید.

۵. دستور زیر را در ترمینال وارد کنید. این دستور هم Systemd را دوباره راه‌اندازی می‌کند و هم می‌توانید با استفاده از آن بررسی کنید که VNC در زمان بوت، با دو کاربر ساخته شده راه‌اندازی می‌شود یا خیر:

sudo systemctl daemon-reload

اولین سرور را راه‌اندازی کنید:

sudo systemctl enable vncserver@:4.service

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

Output

ln -s ‘/etc/systemd/system/vncserver@:4.service’ ‘/etc/systemd/system/multi-user.target.wants/vncserver@:4.service’

 برای سرور دوم هم همین کار را انجام دهید:

sudo systemctl enable vncserver@:5.service

برای این سرور هم باید پیغام زیر به شما نشان داده شود:

Output

ln -s ‘/etc/systemd/system/vncserver@:5.service’ ‘/etc/systemd/system/multi-user.target.wants/vncserver@:5.service’

اینجا دقیقاً خط پایان نصب و راه‌ اندازی VNC Server در لینوکس سنت او اس است! اما اجازه دهید جشن این موفقیت را بعد از مرحله‌ی کوتاه بعدی برگزار کنیم!

برای آشنایی با آموزش پیکربندی SSH برای استفاده از پورت‌‌های مختلف در CentOS 7 مقاله زیر را بخوانید.

پیکربندی SSH درCentOS 7

گام چهارم: پیکربندی فایروال

حالا که نصب VNC روی CentOS را انجام داده‌اید و هم توانسته‌اید آن را پیکربندی کنید. یک مرحله‌ی مهم دیگر هم وجود دارد که امنیت سرور را تضمین می‌کند. شما در این مرحله باید فایروال را طوری پیکربندی کنید که فقط از طریق پورت‌های ۵۹۰۴ و ۵۹۰۵ مجوز دسترسی به ترافیک VNC را بدهد.

اگر چه سرویس Firewalld تقریباً در تمامی موارد به‌صورت خودکار در همان زمان بوت سیستم شروع به‌کار می‌کند، با این حال، بهتر است این موضوع را با دستور زیر کنترل کنید:

sudo firewall-cmd --state

 البته که باید پیغام زیر به شما نشان داده شود:

Output

running

اگر به هر دلیلی، پیغام «Not Running» به شما نشان داده شد، دستور زیر را در ترمینال وارد کنید تا فایروال اجرا شود:

sudo systemctl start firewalld

حالا باید با دستور زیر، مجوز دسترسی به ترافیک VNC را فقط با استفاده از دو پورت ۵۹۰۴ و ۵۹۰۹ صادر کنید:

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

پیغام موفقیت‌آمیز بودن دستورات وارد شده، به‌عنوان خروجی به‌ شما نشان داده می‌شود:

Output

success

حالا فایروال را دوباره راه‌اندازی کنید:

sudo firewall-cmd --reload

بعد از نصب VNC روی CentOS و پیکربندی آن، حالا باید یاد بگیرید که چطور این دو کاربر را به سرور وصل کنید.

اتصال به کلاینت دیگر با استفاده از VNC

اصولاً همه‌ی این کارها را انجام داده‌ایم تا در نهایت به همین جا برسیم! در اینجا می‌خواهیم دو کلاینت Parspack 1 و Parspack 2 را که فرض می‌کنیم از سیستم‌عامل ویندوز استفاده می‌کنند، به سرور با سیستم‌عامل CentOS خود وصل کنیم.

برای این منظور، هر یک از کاربرانی که ایجاد کرده‌ایم، باید یک کلاینت VNC روی سیستم‌عامل ویندوزی خود داشته باشند. کار این کلاینت‌ها دقیقاً مثل ترمینال PuTTy است؛ با این تفاوت که خروجی گرافیکی را هم به شما می‌دهند و این یعنی سادگی بیشترِ کار بعد از نصب VNC روی CentOS!

در این مقاله می‌خواهیم از VNC View برای این منظور استفاده کنیم. نسخه‌ی macOS این نرم‌افزار هم با نامِ VNC Viewer در دسترس است که از نظر ظاهر، مشابه با نسخه‌ی ویندوزی آن است. بنابراین اگر حتی کاربر مک هم هستید، دقیقاً همین مراحل را در نرم‌افزار انجام دهید تا بتوانید به سرور با سیستم‌عامل CentOS خود وصل شوید.

بعد از نصبِ نرم‌افزار، وقتی آن را برای اولین بار باز می‌کنید، پنجره‌ی زیر به شما نشان داده می‌شود:

صفحه لاگین VNC Viewer برای اتصال به کلاینت دیگر
با ورود اطلاعاتتان در VNC Viewer می‌توانید به کلاینت دیگر متصل شوید

در قسمت VNC Server، آی‌پی سرورتان را وارد کنید و دقیقاً بعد از آن علامت «:» و سپس شماره پورت را وارد کنید. مثلاً:

واردکردن آی‌پی و پورست سرور در VNC Viewer
در بخش VNC Server، آی‌پی و پورت سرورتان را وارد کنید

حالا دیگر شما می‌دانید شماره پورت ۵۹۰۴ برای کاربر با نام Parspack1 تعریف شده است. همان‌طور که در شکل بالا می‌بینید، در قسمت Encryption، گزینه‌ی Let VNC Server choose انتخاب شده است. این گزینه فقط رمز عبور را در سرتاسر شبکه رمزنگاری می‌کند.

نکته: برای امنیت بیشتر، می‌توانید با استفاده از پروتکل SSH و تونل زدن، تمامی اطلاعات ردوبدل شده بین کلاینت و سرور را هم به‌صورت رمزنگاری شده درآورید.

بعد از همه‌ی این کارها و کلیک روی گزینه‌ی Connect، یک پیغام به‌صورت زیر به شما نشان داده می‌شود:

پیغام رمزنگاری نشدن ارتباط بین سرور و کلاینت هنگام اتصال به VNC Viewer
به دلیل رمزنگاری نشدن ارتباط بین سرور و کلاینت هنگام اتصال به VNC Viewer با پیغام خطا روبه‌رو می‌شوید

این پیغام بعد از نصب VNC روی CentOS و تلاش برای متصل شدن به آن، به دلیل رمزنگاری نشدن تبادل بین سرور و کلاینت نشان داده می‌شود. روی گزینه‌ی Continue کلیک کنید. بدین ترتیب پنجره‌ای مشابه با تصویر زیر به شما نشان داده می‌شود که باید پسورد خود را در آن وارد کنید:

واردکردن پسورد برای رفع خطای رمزنگاری هنگام اتصال به سرور با وی ان سی
پسورد خود را برای رفع خطای رمزنگاری وارد کنید

بعد از وارد کردن پسورد، تصویر زیر در GNOME به شما نشان داده می‌شود:

نمایش تصویر GNOME در VNC برای اتصال به کلاینت دیگر
تصویر GNOME در VNC برای اتصال به کلاینت دیگر نمایش داده می‌شود

روی دکمه‌ی Next کلیک کنید. حالا با کاربری که با آن لاگین کرده‌اید، می‌توانید از محیطِ گرافیکی GNOME استفاده کنید. مثلاً ماشین حساب نصب شده روی سرور را باز کنید:

استفاده از محیط گرافیکی گنوم برای کار با سرور
از محیط گرافیکی گنوم برای کار با سرور می‌توانید استفاده کنید

نکته‌ بعدی اینکه با همین اکانت می‌توانید یک Session دیگر را با سرور شروع کنید. برای این منظور می‌توانید از همان آدرس آی‌پی همراه با شماره پورت دیگر (مثلاً ۵۹۰۵) استفاده کنید.

بازکردن سشن جدید برای اتصال به سرور در VNC Viewer
می‌توانید سشن جدید برای اتصال به سرور در VNC Viewer اضافه کنید

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

نصب VNC روی CentOS ورژن ۸

اگر از توزیع CentOS 8 روی سرور خود استفاده می‌کنید، برای نصب VNC روی این توزیع، دقیقاً باید همین مراحل را باید انجام دهید. با این حال چند نکته‌ در جزئیات دستورات وجود دارد که در ادامه به آن‌ها اشاره می‌کنیم:

۱. یکی از تفاوت‌های مهم که در نصب VNC روی CentOS ورژن ۷ و ۸ وجود دارد این است که CentOS 7 از پکیج منیجر yum استفاده می‌کند اما در CentOS 8 باید از dnf استفاده کنید.

۲. برای نصب VNC در CentOS نسخه‌ی ۷، از دستور CP برای ایجاد Service File استفاده می‌کنیم، اما در CentOS 8 می‌توانید از یک ویرایشگر متن برای ایجاد آن استفاده کنید. مثال زیر، همین موضوع را توضیح می‌دهد:

/etc/systemd/system/myvncserver.service

۳. در صورت استفاده از CentOS 7، باید یک محیط دسکتاپ مثلِ GNOME را روی سرور نصب کرده باشید. اما در CentOS 8، دسکتاپ GNOME به‌صورت پیش‌فرض نصب شده است و این یعنی شما نیازی به نصب مجدد آن ندارید.

 با سرور مجازی لینوکس پارس پک، دیگر نگران قطعی سرور خود نباشید!

با سرور لینوکس پارس پک، فقط یک سرور ندارید؛ پشتتان به یک تیم پشتیبان گرم است که هیچ وقت تنهایتان نمی‌گذارند. همین حالا روی لینک زیر کلیک کنید و انواع سرور پارس پک را ببینید:

جمع‌بندی

نصب VNC روی CentOS به شما این امکان را می‌دهد تا به‌صورت ریموت، به سرور دسترسی پیدا کنید. با همین توضیح می‌توان به اهمیت این موضوع پی برد. در این مقاله از آموزش سیستم‌عامل بلاگ پارس پک علاوه بر آموزش کامل نصب VNC در CentOS ورژن ۷، تفاوت نصب آن در CentOS 8 را هم بررسی کرده‌ایم. اگر در نصب و راه‌اندازی وی ان سی روی سنت‌او‌اس سوال یا مشکلی داشتید، در بخش دیدگاه‌ها نظراتتان را برای ما ارسال کنید تا در اسرع وقت به آن‌ها پاسخ دهیم.

سؤالات متداول

۱. برای نصب VNC روی CentOS، به چه پیش‌نیازهایی احتیاج داریم؟

برای نصب VNC روی CentOS، علاوه بر سرور لینوکسی که از این توزیع استفاده می‌کند، به دسکتاپ گنوم، ۲ گیگابایت رم سرور و همچنین یک کاربر با سطح دسترسی Sudo نیاز دارید.

۲. آیا استفاده از VNC روی سرور، امن است؟

VNC به‌صورت پیش‌فرض از سیستم رمزگذاری اطلاعات پشتیبانی نمی‌کند. با این حال می‌توانید با اضافه کردن یک تونل SSH، ارتباط بین کلاینت و سرور را ایمن‌سازی کنید.

۳. آیا برای نصب VNC در CentOS، نیاز به محیط دسکتاپ داریم؟

بله. برای نصب VNC در CentOS، باید از محیط دسکتاپ GNOME استفاده کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


ارسال دیدگاه در وبلاگ پارس‌پک را مطالعه کرده و آن‌ها را می‌پذیرم.