معرفی

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

در این راهنما ، شما یک سرور VNC با TightVNC روی سرور اوبونتو 20.04 راه اندازی کرده و از طریق یک SSH tunnel به طور ایمن به آن متصل می شوید. سپس ، از یک برنامه سرویس گیرنده VNC در دستگاه محلی خود برای تعامل با سرور خود از طریق یک محیط رومیزی گرافیکی استفاده خواهید کرد.

پیش نیازها

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

  • یک سرور اوبونتو 20.04 با کاربر اداری غیر روت و فایروال با UFW پیکربندی شده است. برای تنظیم این ، راهنمای راه اندازی سرور اولیه ما برای اوبونتو 20.04 را دنبال کنید.
  • یک رایانه محلی با یک سرویس گیرنده VNC نصب شده است. سرویس گیرنده VNC که استفاده می کنید باید از اتصالات روی تونل های SSH پشتیبانی کند:
    • در Windows ، می توانید از TightVNC ، RealVNC یا UltraVNC استفاده کنید.
    • در macOS ، می توانید از برنامه Screen Sharing داخلی استفاده کنید یا می توانید از یک برنامه چند پلتفرمی مانند RealVNC استفاده کنید.
    • در لینوکس ، می توانید از بین بسیاری از گزینه ها ، از جمله vinagre ، krdc ، RealVNC یا TightVNC ، یکی را انتخاب کنید.

مرحله 1 – نصب محیط دسکتاپ و سرور VNC

به طور پیش فرض ، سرور اوبونتو 20.04 دارای محیط دسکتاپ گرافیکی یا سرور VNC نصب نیست ، بنابراین ابتدا با نصب آن شروع کنید.

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

پس از اتصال به سرور خود با SSH ، لیست بسته های خود را به روز کنید:

sudo apt update

اکنون Xfce را به همراه بسته xfce4-goodies ، که شامل چند پیشرفت برای محیط دسکتاپ است ، نصب کنید:

sudo apt install xfce4 xfce4-goodies

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

پس از اتمام نصب ، سرور TightVNC را نصب کنید:

sudo apt install tightvncserver

در مرحله بعد ، دستور vncserver را برای تنظیم گذرواژه دسترسی VNC ، ایجاد فایلهای پیکربندی اولیه و شروع نمونه سرور VNC اجرا کنید:

vncserver

از شما خواسته می شود که رمز ورود را وارد کرده و برای دسترسی از راه دور به دستگاه خود تأیید کنید:

Output
You will require a password to access your desktops.

Password:
Verify:

رمز عبور باید بین شش تا هشت کاراکتر باشد. گذرواژه های بیش از 8 کاراکتر به طور خودکار کوتاه می شوند.

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

سپس این فرآیند فایلهای پیکربندی پیش فرض لازم و اطلاعات اتصال را برای سرور ایجاد می کند. علاوه بر این ، یک نمونه سرور پیش فرض را روی پورت 5901 راه اندازی می کند. این پورت پورت نمایش نامیده می شود و توسط VNC به عنوان: 1 شناخته می شود. VNC می تواند چندین نمونه را روی سایر پورت های نمایش نمایش دهد ، از جمله: 2 مورد اشاره به پورت 5902 ،: 3 اشاره به 5903 و موارد دیگر:

Output
Would you like to enter a view-only password (y/n)? n
xauth:  file /home/sammy/.Xauthority does not exist

New 'X' 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

 

توجه داشته باشید که اگر می خواهید گذرواژه خود را تغییر دهید یا گذرواژه فقط برای مشاهده اضافه کنید ، می توانید این کار را با دستور vncpasswd انجام دهید:

vncpasswd

در این مرحله ، سرور VNC نصب و اجرا می شود. اکنون اجازه دهید آن را برای راه اندازی Xfce و دسترسی به سرور از طریق یک رابط گرافیکی پیکربندی کنیم.

مرحله 2 – پیکربندی سرور VNC

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

دستوراتی که سرور VNC هنگام راه اندازی اجرا می کند در یک فایل پیکربندی به نام xstartup در پوشه .vnc زیر فهرست اصلی شما قرار دارد. اسکریپت راه اندازی زمانی ایجاد شد که دستور vncserver را در مرحله قبل اجرا کردید ، اما برای راه اندازی دسکتاپ Xfce خود برنامه خود را ایجاد می کنید.

از آنجا که قصد دارید نحوه تنظیم سرور VNC را تغییر دهید ، ابتدا نمونه سرور VNC را که در پورت 5901 اجرا می شود با دستور زیر متوقف کنید:

vncserver -kill :1

خروجی به این شکل خواهد بود ، اگرچه PID متفاوتی را مشاهده خواهید کرد:

Output
Killing Xtightvnc process ID 17648

قبل از اینکه فایل xstartup را اصلاح کنید ، از نسخه اصلی نسخه پشتیبان تهیه کنید:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

حالا یک فایل xstartup جدید ایجاد کنید و آن را در ویرایشگر متن مانند nano باز کنید:

nano ~/.vnc/xstartup

سپس خطوط زیر را به فایل اضافه کنید:

~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

خط اول یک shebang است. در فایلهای متن ساده اجرایی بر روی سیستم عامل های *nix ، یک shebang به سیستم می گوید که آن فایل را برای اجرا به چه مترجمی منتقل کند. در این حالت ، شما فایل را به مترجم Bash منتقل می کنید. این اجازه می دهد تا هر خط متوالی به ترتیب به صورت دستور اجرا شود.

اولین فرمان در فایل ، xrdb $ HOME/.Xresources ، به چارچوب GUI VNC می گوید که فایل .Xresources کاربر سرور را بخواند. .Xresources جایی است که کاربر می تواند در تنظیمات خاصی از دسکتاپ گرافیکی ، مانند رنگ های ترمینال ، تم مکان نما و ارائه فونت تغییراتی ایجاد کند. دستور دوم به سرور می گوید که Xfce را راه اندازی کند. هر زمان که سرور VNC را راه اندازی یا راه اندازی مجدد کنید ، این دستورات به طور خودکار اجرا می شوند.

پس از افزودن این خطوط ، فایل را ذخیره و ببندید. اگر از نانو استفاده می کنید ، این کار را با فشار دادن CTRL + X ، Y و سپس ENTER انجام دهید.

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

chmod +x ~/.vnc/xstartup

سپس سرور VNC را راه اندازی مجدد کنید:

vncserver -localhost

توجه داشته باشید که این بار این فرمان شامل گزینه -localhost است که سرور VNC را به رابط loopback سرور شما متصل می کند. این باعث می شود VNC فقط به اتصالات منشاء شده از سروری که روی آن نصب شده است اجازه دهد.

در مرحله بعد ، شما یک تونل SSH بین دستگاه محلی خود و سرور خود ایجاد می کنید و اساساً VNC را فریب می دهید تا فکر کند که اتصال دستگاه محلی شما از سرور شما ایجاد شده است. این استراتژی یک لایه امنیتی اضافی در اطراف VNC ایجاد می کند ، زیرا تنها کاربرانی که می توانند به آن دسترسی پیدا کنند ، کسانی هستند که از قبل دسترسی SSH به سرور شما دارند.

خروجی مشابه این را خواهید دید:

Output
New 'X' desktop is your_hostname:1

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

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

مرحله 3 – اتصال ایمن به دسکتاپ VNC

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

یک اتصال SSH روی رایانه محلی خود ایجاد کنید که به طور ایمن به اتصال localhost برای VNC ارسال می شود. می توانید این کار را از طریق ترمینال در لینوکس یا macOS با دستور ssh زیر انجام دهید:

ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip

در اینجا منظور از گزینه های این دستور ssh است:

  • -L 59000: localhost: 5901: سوئیچ -L مشخص می کند که پورت داده شده در رایانه محلی (59000) باید به میزبان و پورت داده شده در سرور مقصد ارسال شود (localhost: 5901 ، یعنی پورت 5901 در سرور مقصد ، به عنوان your_server_ip) تعریف شده است. توجه داشته باشید که پورت محلی که مشخص کرده اید تا حدودی دلخواه است. تا زمانی که پورت قبلاً به سرویس دیگری متصل نشده باشد ، می توانید از آن به عنوان پورت حمل و نقل تونل خود استفاده کنید.
  • -C: این پرچم فشرده سازی را فعال می کند که می تواند به حداقل رساندن مصرف منابع و سرعت بخشیدن به کارها کمک کند.
  • -N: این گزینه به ssh می گوید که نمی خواهید هیچ دستور از راه دور را اجرا کنید. این تنظیم زمانی مفید است که فقط بخواهید پورت ها را به جلو ارسال کنید.
  • -l sammy your_server_ip: سوئیچ -l به شما اجازه می دهد تا زمانی که به سرور متصل می شوید ، کاربری را که می خواهید وارد آن شوید ، مشخص کنید. اطمینان حاصل کنید که نام کاربر غیر ریشه و آدرس IP سرور خود را جایگزین sammy و your_server_ip کنید.

اگر از PuTTY برای اتصال به سرور خود استفاده می کنید ، می توانید با کلیک راست روی نوار بالای پنجره ترمینال و سپس کلیک روی گزینه Change Settings … یک تونل SSH ایجاد کنید:

شاخه Connection را در منوی درخت در سمت چپ پنجره PuTTY Reconfiguration پیدا کنید. شاخه SSH را گسترش دهید و بر روی Tunnels کلیک کنید. در گزینه های کنترل کننده صفحه نمایش حمل و نقل SSH ، 59000 را به عنوان منبع و localhost: 5901 را به عنوان مقصد وارد کنید ، مانند این:

سپس روی دکمه افزودن و سپس روی دکمه اعمال برای پیاده سازی تونل کلیک کنید.

پس از اجرای tunnel ، از یک سرویس گیرنده VNC برای اتصال به localhost استفاده کنید: 59000. از شما خواسته می شود با استفاده از گذرواژه ای که در مرحله 1 تنظیم کرده اید ، احراز هویت کنید.

پس از اتصال ، دسکتاپ پیش فرض Xfce را مشاهده خواهید کرد. باید چیزی شبیه به این باشد:

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

CTRL+C را در local terminal خود فشار دهید تا SSH tunnel متوقف شود و به درخواست خود بازگردید. با این کار جلسه VNC شما نیز قطع می شود.

اکنون می توانید سرور VNC خود را پیکربندی کنید تا به عنوان یک سرویس systemd اجرا شود.

مرحله 4 – اجرای VNC به عنوان سرویس سیستم

با راه اندازی سرور VNC به عنوان سرویس systemd ، می توانید آن را مانند هر سرویس دیگری شروع ، متوقف و راه اندازی مجدد کنید. همچنین می توانید از دستورات مدیریت systemd استفاده کنید تا مطمئن شوید VNC هنگام بوت شدن سرور شما شروع به کار می کند.

ابتدا یک فایل واحد جدید به نام /etc/systemd/system/vncserver@.service ایجاد کنید:

sudo nano /etc/systemd/system/vncserver@.service

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

خطوط زیر را به فایل اضافه کنید. مطمئن شوید که مقدار User، Group ، 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>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

دستور ExecStartPre اگر VNC در حال اجرا است متوقف می کند. فرمان ExecStart VNC را راه اندازی می کند و عمق رنگ را با رنگ 24 بیت با وضوح 1280×800 تنظیم می کند. همچنین می توانید این گزینه های راه اندازی را برای رفع نیازهای خود تغییر دهید. همچنین ، توجه داشته باشید که دستور ExecStart مجدداً شامل گزینه -localhost است.

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

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

sudo systemctl daemon-reload

فایل واحد را فعال کنید:

sudo systemctl enable vncserver@1.service

1 زیر علامت @ نشان می دهد که سرویس باید در کدام صفحه نمایش ظاهر شود ، در این حالت پیش فرض: 1 همانطور که در مرحله 2 مورد بحث قرار گرفت.

اگر سرور VNC هنوز در حال اجرا است ، نمونه فعلی آن را متوقف کنید:

vncserver -kill :1

سپس آن را مانند هر سرویس systemd دیگری شروع کنید:

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; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-05-07 17:23:50 UTC; 6s ago
    Process: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
    Process: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
   Main PID: 39795 (Xtightvnc)
...

سرور VNC شما اکنون آماده استفاده در زمان بالا آمدن سرور شما است و شما می توانید آن را با دستورات systemctl مانند سایر سرویس های systemd مدیریت کنید.

با این حال ، هیچ تفاوتی در سمت مشتری وجود نخواهد داشت. برای اتصال مجدد ، تونل SSH خود را دوباره راه اندازی کنید:

ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip

سپس با استفاده از نرم افزار سرویس گیرنده VNC خود به localhost یک اتصال جدید ایجاد کنید: 59000 برای اتصال به سرور خود.

نتیجه

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

 


سرور مجازی آلمان

سرور مجازی آمریکا

سرور مجازی فرانسه

سرور مجازی کانادا

سرور مجازی لهستان

سرور مجازی هلند

سرور مجازی انگلیس

 

برچسب‌ها:, , , , , , , ,