آموزش راه اندازی و نصب VNC
VNC، یک سیستم اتصال است که به شما امکان می دهد از صفحه کلید و ماوس خود برای کار با محیط دسکتاپ گرافیکی روی یک سرور راه دور استفاده کنید. بنابراین با نصب VNC مدیریت فایلها، نرمافزارها و تنظیمات روی سرور راه دور را برای کاربرانی که هنوز با کامند ها آشنایی چندانی ندارند، آسانتر میشود.
در این مقاله قصد داریم یک VNC روی سرور اوبونتو 22.04 راهاندازی کرده و از طریق یک تونل SSH به آن متصل شویم. سپس از VNC Client برای ارتباط با سرور از طریق یک محیط دسکتاپ گرافیکی استفاده خواهیم کرد.
پیش نیازها
برای نصب VNC روی سرور، شما به موارد زیر نیاز دارید:
- یک سرور اوبونتو 22.04 با یک کاربری غیر root و فایروال پیکربندی شده با UFW.
- یک کامپیوتر با یک VNC Client نصب شده. VNC Client که استفاده می کنید باید از اتصالات روی تونل های SSH پشتیبانی کند:
- در ویندوز، می توانید از TightVNC، RealVNC یا UltraVNC استفاده کنید.
- در macOS، میتوانید از برنامه Screen Sharing داخلی استفاده کنید یا میتوانید از یک برنامه چند پلتفرمی مانند RealVNC استفاده کنید.
- در لینوکس، میتوانید از میان گزینههای بسیاری، از جمله vinagre، krdc، RealVNC یا TightVNC انتخاب کنید.
مرحله 1:نصب VNC Server
بهطور پیشفرض، سرور اوبونتو 22.04 دارای محیط دسکتاپ گرافیکی یا VNC Server نیست، بنابراین شما باید ابتدا با نصب آنها شروع کنید. وقتی نوبت به انتخاب VNC Server و محیط دسکتاپ گرافیکی میرسد، گزینههای زیادی دارید. در این آموزش، آخرین نسخه Xfce و TightVNCرا نصب می کنیم. Xfce و TightVNC هر دو به سبک و سریع بودن معروف هستند، که به اطمینان از اینکه اتصال VNC حتی در اتصالات اینترنت کند پایدار بماند، کمک می کند.
1. آپدیت پکیج ها
در مرحله اول باید پس از اتصال به سرور خود با SSH، تمام پکیج های را از طریق دستور زیر به روز کنید:
sudo apt update
2. نصب Xfce و xfce4-goodies
اکنون باید Xfce را به همراه xfce4-goodies نصب کنید برای این کار دستور زیر را وارد کنید:
sudo apt install xfce4 xfce4-goodies
در حین نصب، ممکن است از شما خواسته شود که یک display manager پیش فرض برای Xfce انتخاب کنید. display manager برنامه ای است که به شما امکان می دهد از طریق یک رابط گرافیکی یک محیط دسکتاپ را انتخاب کرده و وارد آن شوید. شما فقط زمانی از Xfce استفاده خواهید کرد که با یک VNC Client وصل شوید، و در Xfce از قبل به عنوان کاربر غیر روت اوبونتو وارد سیستم شوید. بنابراین یکی از display manager ها را انتخاب کنید و ENTER را بزنید.
3. نصب TightVNC
پس از اتمام نصب، TightVNC را با وارد کردن دستور زیر نصب کنید:
sudo apt install tightvncserver
در مرحله بعد، دستور vnc server را برای تنظیم رمز عبور VNC، ایجاد فایل های پیکربندی اولیه و استارت یک نمونه VNC Server اجرا کنید:
vncserver
4. وارد کردن رمز عبور
اکنون از شما خواسته می شود برای دسترسی از راه دور به دستگاه خود رمز عبور را وارد و تأیید کنید مانند آنچه در زیر می بینید:
You will require a password to access your desktops.
Password:
Verify:
رمز عبور باید بین شش تا هشت کاراکتر باشد. رمزهای عبور بیش از 8 کاراکتر به طور خودکار کوتاه می شوند.
هنگامی که رمز عبور را تأیید کردید، یک پیام را مشاهده خواهید کرد که می گوید یک رمز عبور فقط برای مشاهده ایجاد کنید. کاربرانی که با این گذرواژه وارد میشوند، نمیتوانند VNC را با ماوس یا صفحه کلید خود کنترل کنند. بنابرین اگر می خواهید چیزی را با استفاده از VNC Server خود به افراد دیگر نشان دهید، این گزینه می تواند مفید باشد.
اکنون فایل های پیکربندی پیش فرض لازم و اطلاعات اتصال به سرور ایجاد می شود و یک نمونه سرور پیشفرض را با پورت 5901 راهاندازی میکند. این پورت یک پورت نمایش نامیده میشود. VNC میتواند چندین نمونه را روی پورتهای نمایشگر دیگر راهاندازی کند، به طور مثال با پورت 5902، 5903 و غیره.
توجه داشته باشید که اگر زمانی می خواهید رمز عبور خود را تغییر دهید یا یک رمز عبور فقط برای مشاهده اضافه کنید، می توانید این کار را با دستور vncpasswd انجام دهید:
vncpasswd
در این مرحله VNC Server نصب و اجرا می شود. اکنون آن را برای راه اندازی Xfce پیکربندی می کنیم و از طریق یک رابط گرافیکی اجازه دسترسی به سرور را پیدا می کنیم.
مرحله 2: پیکربندی VNC Server
دستوراتی که VNC Server هنگام راه اندازی اجرا می کند در یک فایل پیکربندی به نام xstartup در پوشه .vnc در زیر منو اصلی شما قرار دارد. اسکریپت راه اندازی زمانی ایجاد شد که در مرحله قبل دستور vncserver را اجرا کردید.
از آنجایی که قرار است پیکربندی سرور VNC را تغییر دهید، ابتدا نمونه VNC Server را که در پورت 5901 اجرا می شود با دستور زیر متوقف کنید:
vncserver -kill :1
قبل از اینکه فایل xstartup را تغییر دهید، از نسخه اصلی با وارد کردن دستور زیر نسخه پشتیبان تهیه کنید:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
حالا یک فایل xstartup جدید ایجاد کنید و آن را در یک ویرایشگر متنی مانند nano بادستور زیر باز کنید:
nano ~/.vnc/xstartup
سپس خطوط زیر را به فایل اضافه کنید:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
خط اول این دستور یک شیبنگ است. در فایلهای متن ساده قابل اجرا در پلتفرمهای *nix، یک shebang به سیستم میگوید که آن فایل را برای اجرا به چه مفسری ارسال کند. با این کار فایل را به مترجم Bash میفرستید و هر خط متوالی به ترتیب به عنوان دستور اجرا می شود.
اولین دستور موجود در فایل (xrdb $HOME/.Xresources)، به چارچوب رابط کاربری گرافیکی VNC میگوید فایل .Xresources را بخواند. در فایل .Xresources کاربر می تواند در تنظیمات خاصی از دسکتاپ گرافیکی، مانند رنگ های ترمینال، تم های مکان نما، و رندر فونت، تغییراتی ایجاد کند. فرمان دوم به سرور می گوید که Xfce را راه اندازی کند. هر زمان که VNC Server را راه اندازی یا راه اندازی مجدد می کنید، این دستورات به صورت خودکار اجرا می شوند.
پس از افزودن این خطوط فایل را ذخیره کرده و ببندید. اگر از Nano استفاده میکنید، این کار را با فشار دادن CTRL + X، Y و سپس ENTER انجام دهید. برای اطمینان از اینکه سرور VNC میتواند از این فایل راهاندازی جدید به درستی استفاده کند، باید آن را قابل اجرا کنید بنابراین برای این کار دستور زیر را وارد کنید :
chmod +x ~/.vnc/xstartup
سپس VNC Server را با دستور زیر مجددا راه اندازی کنید:
vncserver -localhost
توجه داشته باشید که این بار این دستور شامل -localhost است که سرور VNC را به رابط Loopback سرور شما متصل می کند. این باعث می شود VNC، فقط به اتصالات سروری که روی آن نصب شده است اجازه دهد.
در مرحله بعدی، یک تونل SSH بین کامپیوتر و سرور ایجاد میکنیم، که اساساً VNC را فریب میدهید تا فکر کند اتصال کامپیوتر شما از سرور شما منشا گرفته است. این استراتژی یک لایه امنیتی اضافی در اطراف VNC ایجاد می کند، زیرا تنها کاربرانی که می توانند به آن دسترسی داشته باشند، کسانی هستند که قبلاً به سرور شما دسترسی SSH داشته اند. با پیکربندی انجام شده، اکنون آماده اتصال به سرور VNC از طریق کامپیوتر خود هستید.
مرحله 3: اتصال ایمن به دسکتاپ VNC
VNC هنگام اتصال از پروتکل های امن استفاده نمی کند. بنابراین باید برای اتصال ایمن به سرور خود، یک تونل SSH ایجاد کنید و از این پس به جای برقراری ارتباط مستقیم، با SSH متصل شوید. بنابراین اکنون یک اتصال SSH ایمن بزنید. می توانید این کار را از طریق ترمینال در لینوکس یا macOS با دستور ssh زیر انجام دهید:
ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
شرح دستور بالا:
- -L 59000:localhost:5901: سوئیچ -L مشخص می کند که پورت داده شده در کامپیوتر (59000) باید به هاست و پورت داده شده در سرور مقصد ارسال شود (localhost:5901، به معنای پورت 5901 در سرور مقصد. ، به عنوان your_server_ip تعریف می شود). توجه داشته باشید که پورت Local که مشخص می کنید تا حدودی دلخواه است. البته تا زمانی که پورت از قبل به سرویس دیگری متصل نشده باشد، می توانید از آن به عنوان پورت ارسال تونل خود استفاده کنید.
- -C: این بخش از دستور flage فشرده سازی را فعال می کند که می تواند به کاهش مصرف منابع و سرعت بخشیدن به کارها کمک کند.
- -N: این گزینه به ssh می گوید که نمی خواهید هیچ فرمان راه دور را اجرا کنید. این تنظیم زمانی مفید است که فقط می خواهید پورت ها را فوروارد کنید.
- -l sammy your_server_ip: سوئیچ -l به شما اجازه می دهد تا زمانی که به سرور وصل می شوید کاربری را که می خواهید وارد شوید مشخص کنید. اکنون sammy و your_server_ip را با نام کاربر غیر root و آدرس IP سرور خود جایگزین کنید.
توجه: این دستور یک تونل SSH ایجاد می کند که اطلاعات را از پورت 5901 در سرور VNC شما به پورت 59000 در کامپیوتر شما از طریق پورت 22 در هر دستگاه، پورت پیش فرض SSH، ارسال می کند.
با اتصال از طریق یک تونل SSH، دسترسی VNC را به ماشین هایی که قبلاً به سرور دسترسی SSH دارند محدود می کنید. اگر از PuTTY برای اتصال به سرور خود استفاده می کنید، می توانید با کلیک راست بر روی نوار بالای پنجره ترمینال، یک تونل SSH ایجاد کنید و سپس روی گزینه Change Settings کلیک کنید:
شاخه Connection را در منوی درختی در سمت چپ پنجره PuTTY Reconfiguration پیدا کنید. شاخه SSH را باز کنید و روی Tunnels کلیک کنید. در Options controlling SSH port forwarding، پورت 59000 را به عنوان Source Port و localhost:5901 را به عنوان Destination وارد کنید، مانند تصویر زیر:
سپس روی دکمه Add کلیک کنید و گزینه Apply را برای پیاده سازی تونل بزنید. پس از اجرای تونل، از یک کلاینت VNC برای اتصال به localhost:59000 استفاده کنید. از شما خواسته می شود با استفاده از رمز عبوری که در مرحله 1 تنظیم کرده اید، احراز هویت را انجام دهید. پس از اتصال، دسکتاپ پیش فرض Xfce را خواهید دید. باید چیزی شبیه به تصویر زیر را مشاهده کنید:
همانطور که در اینجا مشاهده می کنید، می توانید با File Manager یا از خط فرمان به فایل های موجود در فهرست اصلی خود دسترسی پیدا کنید:
کلید های CTRL+C را در ترمینال Local خود فشار دهید تا تونل SSH متوقف شود و به درخواست خود بازگردید. این کار اتصال VNC شما را نیز قطع می کند. اکنون می توانید سرور VNC خود را برای اجرا به عنوان یک سرویس systemd پیکربندی کنید. در ادامه به این موضوع نیز می پردازیم.
مرحله 4: اجرای VNC به عنوان یک سرویس systemd
با راه اندازی VNC Server برای اجرا به عنوان یک سرویس systemd، می توانید آن را در صورت لزوم، مانند هر سرویس دیگری، راه اندازی، متوقف و راه اندازی مجدد کنید. همچنین می توانید از دستورات مدیریت systemd استفاده کنید تا اطمینان حاصل کنید که VNC هنگام بوت شدن سرور شما start می شود.
برای این کار ابتدا یک unit file جدید با دستور زیر ایجاد کنید:
sudo nano /etc/systemd/system/[email protected]
نماد @ در انتهای نام به ما اجازه می دهد تا آرگومانی را که می توانید در پیکربندی سرویس استفاده کنید، ارسال کنیم. خطوط زیر را به فایل اضافه کنید. حتماً مقدار User، Group، WorkingDirectory و User Name را در مقدار PIDFILE تغییر دهید تا با نام کاربری شما مطابقت داشته باشد:
/etc/systemd/system/[email protected]
[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 است. در نهایت ذخیره کنید و فایل را ببندید.
در مرحله بعد، با وارد کردن دستور زیر سیستم را از unit file جدید آگاه کنید:
sudo systemctl daemon-reload
سپس unit file را با وارد کردن دستور جدید فعال کنید:
sudo systemctl enable [email protected]
اکنون اگر نمونه فعلی VNC Server هنوز در حال اجرا است می توانید با دستور زیر آن را متوقف کنید:
vncserver -kill :1
سپس آن را مانند هر سرویس systemd دیگری با دستور زیر راه اندازی کنید:
sudo systemctl start vncserver@1
و با دستور زیر می توانید تأیید کنید که با این دستور راه اندازی شده است:
sudo systemctl status vncserver@1
اگر این سرویس به درستی راه اندازی شود، خروجی باید به شکل زیر باشد:
● [email protected] - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-04-18 16:57:26 UTC; 20s ago
Process: 97088 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
Process: 97092 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 (code=exited, status=0/SUCCESS)
Main PID: 97103 (Xtightvnc)
Tasks: 77 (limit: 4665)
Memory: 146.7M
CPU: 4.459s
CGroup: /system.slice/system-vncserver.slice/[email protected]
. . .
سرور VNC شما اکنون آماده استفاده است و می توانید آن را مانند هر سرویس systemd دیگری با دستورات systemctl مدیریت کنید. با این حال، هیچ تفاوتی در سمت Client وجود نخواهد داشت. برای اتصال مجدد، تونل SSH خود را با دستور زیر دوباره راه اندازی کنید:
ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
سپس یک اتصال جدید با استفاده از نرم افزار VNC Client خود به localhost:59000 برای اتصال به سرور خود ایجاد کنید.
سخن پایانی
تبریک می گوییم اکنون شما نصب VNC را به اتمام رساندید و یک VNC Srever ایمن دارید که روی سرور اوبونتو 22.04 خود راه اندازی و اجرا می شود. اکنون میتوانید فایلها، نرمافزارها و تنظیمات خود را با یک رابط گرافیکی کاربرپسند مدیریت کنید و میتوانید با ریموت زدن به سرور با VNC نرمافزارهای گرافیکی مانند مرورگرهای وب را از راه دور اجرا کنید.
منبع: digitalocean.com