Virtual Network Computing یا VNC یک سیستم اتصال است که به شما امکان می دهد از صفحه کلید و ماوس خود برای تعامل با یک محیط دسکتاپ گرافیکی روی یکسرور مجازیاز راه دور استفاده کنید. این امر باعث می شود مدیریت فایل ها ، نرم افزارها و تنظیمات روی یکسرور مجازیاز راه دور برای کاربرانی که همچنان با خط فرمان احساس راحتی نمیکنند ، آسانتر شود.
در این راهنما ،سرور مجازیVNC را روی یکسرور مجازیاوبونتو .04 تنظیم کرده و از طریق یک تونل SSH با ایمنی به آن وصل می شوید. شما از TightVNC ، یک بسته کنترل از راه دور سریع و سبک استفاده می کنید. این انتخاب اطمینان حاصل خواهد کرد که اتصال VNC ما حتی در اتصالات اینترنت کندتر هموار و پایدار خواهد بود.
پیش نیازها
برای تکمیل این آموزش ، به موارد زیر نیاز دارید:
bull; یکسرور مجازیUbuntu .04 که طبق راهنمای ستاپ اولیهسرور مجازیUbuntu .04 تنظیم شده باشد، شامل یک کاربر sudo غیر ریشه و فایروال باشد.
bull; یک کامپیوتر محلی با یک کلاینت VNC نصب شده که اتصالات VNC را از طریق تونل های SSH پشتیبانی می کند.
o در ویندوز ، می توانید از TightVNC ، RealVNC یا UltraVNC استفاده کنید.
o در macOS ، می توانید از برنامه داخلی اشتراک گذاری صفحه استفاده کنید ، یا می توانید از یک برنامه cross-platform مانند RealVNC استفاده کنید.
o در لینوکس ، می توانید گزینه های بسیاری از جمله vinagre ، krdc ، RealVNC یا TightVNC را انتخاب کنید.
مرحله 1 - نصب محیط دسکتاپ وسرور مجازیVNC
به طور پیش فرض ، یکسرور مجازیUbuntu .04 با محیط دسکتاپ گرافیکی یاسرور مجازیVNC همراه نیست ، بنابراین ما با نصب آن ها کار را شروع خواهیم کرد. به طور خاص ، بسته های جدیدترین محیط دسکتاپ Xfce و بسته TightVNC موجود در مخزن رسمی اوبونتو را نصب خواهیم کرد.
درسرور مجازیخود لیست بسته های خود را به روز کنید:
⦁ $ sudo apt update

اکنون محیط دسکتاپ Xfce را رویسرور مجازیخود نصب کنید:
⦁ $ sudo apt install xfce4 xfce4-goodies

پس از اتمام نصب ،سرور مجازیTightVNC را نصب کنید:
⦁ $ sudo apt install tightvncserver

برای تکمیل پیکربندی اولیهسرور مجازیVNC پس از نصب ، از دستور vncserver برای تنظیم گذرواژه ایمن و ایجاد فایل های پیکربندی اولیه استفاده کنید:
⦁ $ vncserver

از شما خواسته می شود یک رمز ورود را برای دسترسی از راه دور به دستگاه خود وارد کرده و تأیید کنید:
Output
You will require a password to access your desktops.

Password:
Verify:

رمز عبور باید بین شش تا هشت کاراکتر باشد. گذرواژه های بیش از 8 کاراکتر به صورت خودکار کوتاه خواهند شد.
پس از تأیید گذرواژه ، می توانید یک گذرواژه view-only ایجاد کنید. کاربرانی که با رمز ورود view-only به سیستم وارد می شوند ، قادر به کنترل نمونه VNC با ماوس یا صفحه کلید خود نخواهند بود. اگر می خواهید چیزی را با استفاده ازسرور مجازیVNC خود به دیگران نشان دهید ، این گزینه مفید میباشد ، اما ضروری نیست.
سپس این فرآیند فایلهای پیکربندی پیش فرض لازم و اطلاعات اتصال را برایسرور مجازیایجاد می کند:
Output
Would you like to enter a view-only password (y/n)? n
xauth: file /home/sammy/.Xauthority does not exist

New lsquo;Xrsquo; desktop is your_hostname:1

Creating default startup script /home/sammy/.vnc/xstartup
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log

اکنون بگذاریدسرور مجازیVNC را پیکربندی کنیم.
مرحله 2 - پیکربندیسرور مجازیVNC
سرور مجازیVNC باید بداند که در هنگام راه اندازی چه دستوراتی را اجرا می کند. به طور خاص ، VNC باید بداند که به کدام دسکتاپ گرافیکی وصل شود.
این دستورات در یک فایل پیکربندی به نام xstartup در پوشه .vnc تحت دیرکتوری هوم شما قرار دارند. اسکریپت راه اندازی هنگامی ایجاد شد که در مرحله قبل vncserver را اجرا کردید ، اما برای راه اندازی دسکتاپ Xfce ، اسکریپت خودمان را ایجاد خواهیم کرد.
هنگامی که VNC برای اولین بار راه اندازی میشود ، یک نمونهسرور مجازیپیش فرض را در پورت 5901 راه اندازی می کند. این پورت به عنوان پورت نمایشگر نامیده می شود و توسط VNC به صورت :1 ارجاع داده می شود. VNC می تواند چندین نمونه در پورت های نمایشگر دیگر مانند: 2 ،: 3 و غیره راه اندازی کند.
از آنجا که می خواهیم نحوه پیکربندیسرور مجازیVNC را تغییر دهیم ، ابتدا نمونهسرور مجازیVNC را که با استفاده از پورت 5901 در حال اجرا است با دستور زیر متوقف کنید:
⦁ $ vncserver -kill :1

خروجی باید به این شکل باشد ، اگرچه یک PID متفاوت را مشاهده خواهید کرد:
Output
Killing Xtightvnc process ID 17648
قبل از تغییر فایل xstartup ، از نسخه اصلی نسخه پشتیبان تهیه کنید:
⦁ $ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

اکنون یک فایل xstartup جدید ایجاد کرده و آن را در ویرایشگر متن خود باز کنید:
⦁ $ nano ~/.vnc/xstartup

هر زمان کهسرور مجازیVNC را شروع یا ریستارت میکنید، دستورات موجود در این فایل بطور خودکار اجرا میشوند. برای شروع محیط دسکتاپ خود در صورتی که از قبل شروع نشده است ، به VNC احتیاج داریم. این دستورات را به فایل اضافه کنید:
~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 amp;

اولین دستورالعمل موجود در فایل ، xrdb $ HOME / .Xresource ، به چارچوب رابط کاربری گرافیکی VNC میگوید فایل .Xresources کاربرسرور مجازیرا بخواند. Xresource جایی است که یک کاربر می تواند تنظیمات خاصی از دسکتاپ گرافیکی ، مانند رنگ های ترمینال ، تم های مکان نما و رندر فونت ، تغییراتی ایجاد کند. دستور دوم بهسرور مجازیمی گوید که Xfce را راه اندازی کند ، در این قسمت تمام نرم افزارهای گرافیکی مورد نیاز خود را برای مدیریت راحتسرور مجازیخود پیدا خواهید کرد.
برای اطمینان از اینکهسرور مجازیVNC قادر به استفاده صحیح از این فایل راه اندازی جدید خواهد بود ، باید آن را عملیاتی کنیم.
⦁ $ sudo chmod +x ~/.vnc/xstartup

اکنون ،سرور مجازیVNC را رستارت کنید.
⦁ $ vncserver

خروجی مشابه این را مشاهده خواهید کرد:
Output
New lsquo;Xrsquo; desktop is your_hostname:1

Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log

با پیکربندی موجود ، بیایید از دستگاه محلی خود بهسرور مجازیوصل شویم.
مرحله 3 - اتصال ایمن به دسکتاپ VNC
VNC در هنگام اتصال از پروتکل های ایمن استفاده نمی کند. ما برای اتصال ایمن بهسرور مجازیخود از یک تونل SSH استفاده خواهیم کرد و سپس به کلاینت VNC می گوییم به جای برقراری ارتباط مستقیم از آن تونل استفاده کند.
یک اتصال SSH را روی رایانه محلی خود ایجاد کنید که به طور ایمن به اتصال محلی برای VNC منتقل شود. شما می توانید این کار را از طریق ترمینال در لینوکس یا macOS با دستور زیر انجام دهید:
⦁ ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

سوئیچ -L اتصالات پورت را مشخص می کند. در این حالت ما پورت 5901 اتصال از راه دور را به پورت 5901 در دستگاه محلی شما وصل می کنیم. سوئیچ -C فشرده سازی را قادر می سازد ، در حالی که سوئیچ -N به ssh می گوید که ما نمی خواهیم یک دستور از راه دور را اجرا کنیم. سوئیچ -l نام ورود از راه دور را مشخص می کند.
به یاد داشته باشید که sammy و your_server_ip را با نام کاربری sudo غیر ریشه و آدرس IPسرور مجازیخود جایگزین کنید.
اگر از یک سرویس دهنده گرافیکی SSH استفاده می کنید ، مانند PuTTY ، از your_server_ip به عنوان IP اتصال استفاده کنید و localhost: 5901 را به عنوان پورت جدید ارسال شده در تنظیمات تونل SSH برنامه تنظیم کنید.
پس از راه اندازی تونل ، از یک سرویس دهنده VNC برای اتصال به localhost:5901 استفاده کنید. از شما خواسته می شود با استفاده از رمزعبور تنظیم شده در مرحله 1 ، تأیید اعتبار کنید.
پس از اتصال ، میزکار پیش فرض Xfce را مشاهده خواهید کرد. باید چیزی شبیه به این باشد:

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

CTRL + C را در ترمینال خود فشار دهید تا تونل SSH را متوقف کرده و به اعلان خود بازگردید. این کار بخش VNC شما را نیز قطع می کند.
بگذاریدسرور مجازیVNC ما به عنوان سرویس تنظیم شود.
مرحله 4 - اجرای VNC به عنوان یک سرویس سیستم
در مرحله بعدی ،سرور مجازیVNC را به عنوان یک سرویس سیستمی تنظیم خواهیم کرد تا بتوانیم مانند هر سرویس دیگر ، آن را بنا به نیاز ، راه اندازی ، متوقف و مجدداً راه اندازی کنیم. این کار همچنین راه اندازی VNC در حین ریبوتسرور مجازیرا تضمین می کند.
ابتدا با استفاده از ویرایشگر متن مورد علاقه خود ، یک فایل واحد جدید با نام /etc/systemd/system/vncserver@.service ایجاد کنید:
⦁ $ sudo nano /etc/systemd/system/vncserver@.service

نماد @ در انتهای نام به ما اجازه می دهد تا آرگومانی را که می توانیم در پیکربندی سرویس استفاده کنیم ، وارد کنیم. از آن برای مشخص کردن پورت نمایشگر VNC استفاده خواهیم کرد که می خواهیم هنگام مدیریت سرویس استفاده کنیم .
خطوط زیر را به فایل اضافه کنید. حتماً مقدار کاربر ، گروه ، WorkingDirectory و نام کاربری را در مقدار PIDFILE تغییر دهید تا با نام کاربری شما مطابقت داشته باشد:
/etc/systemd/system/vncserver@.service
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy

PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>amp;1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280*800 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

فرمان ExecStartPre اگر قبلاً در حال اجرا باشد VNC را متوقف می کند. دستور ExecStart ، VNC را شروع می کند و عمق رنگ را به رنگ 24 بیتی با رزولوشن 1280*800 تنظیم می کند. می توانید بنا به نیازهای خود این گزینه های راه اندازی را تغییر دهید.
فایل را ذخیره کنید و ببندید.
سپس ، سیستم را از وجود فایل واحد جدید آگاه کنید.
⦁ $ sudo systemctl daemon-reload

فایل واحد را فعال کنید.
⦁ $ sudo systemctl enable vncserver@1.service

1 بعد از علامت @ نشان می دهد که کدام شماره نمایش سرویس باید روی آن ظاهر شود ، در این حالت پیش فرض : 1 است، همانطور که در مرحله 2 بحث شد.
اگر هنوز نمونه فعلیسرور مجازیVNC در حال اجرا است آن را متوقف کنید.
⦁ $ vncserver -kill :1

سپس آن را شروع کنید همانطور که هر سرویس سیستمی دیگری را شروع می کنید.
⦁ $ sudo systemctl start vncserver@1

با این دستور می توانید تأیید کنید که شروع شده است:
⦁ $ sudo systemctl status vncserver@1

اگر به درستی شروع شود ، خروجی باید به این شکل باشد:
Output
● vncserver@1.service - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/vncserver@.service; indirect; vendor preset: enabled)
Active: active (running) since Mon 20-07-09 :13:53 UTC; 2min 14s ago
Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280*800 :1 (code=exited, status=0/SUCCESS)
Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>amp;1 (code=exited, status=0/SUCCESS)
Main PID: 22330 (Xtightvnc)

.

سرور مجازیVNC شما هنگام ریبوت دستگاه ، اکنون در دسترس خواهد بود.
دوباره تونل SSH خود را شروع کنید:
⦁ $ ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

سپس با استفاده از نرم افزار کلاینت VNC خود به localhost: 5901 اتصال جدیدی برقرار کنید تا به دستگاه خود متصل شوید.
نتیجه
اکنون یکسرور مجازیVNC امن درسرور مجازیUbuntu .04 خود فعال و راه اندازی کرده اید. در حال حاضر می توانید فایلها ، نرم افزارها و تنظیمات خود را با یک رابط گرافیکی آسان و کاربردی مدیریت کنید و قادر خواهید بود نرم افزارهای گرافیکی مانند مرورگرهای وب را از راه دور اجرا کنید.