חלק מהמשתמשים שוכרים VPS זול יחסית עם Windows כדי להפעיל שירותי שולחן עבודה מרוחק. ניתן לעשות את אותו הדבר בלינוקס מבלי לארח את החומרה שלך במרכז נתונים או לשכור שרת ייעודי. יש אנשים שזקוקים לסביבה גרפית מוכרת לבדיקה ופיתוח, או לשולחן עבודה מרוחק עם ערוץ רחב לעבודה ממכשירים ניידים. ישנן אפשרויות רבות לשימוש במערכת מחשוב רשת וירטואלית (VNC) מבוססת פרוטוקול Remote FrameBuffer (RFB). במאמר קצר זה נספר לכם כיצד להגדיר אותו במכונה וירטואלית עם כל היפרוויזר.
אופציות:
בחירת שרת VNC
ניתן לבנות את שירות ה-VNC במערכת הווירטואליזציה, וההיפרוויזר יחבר אותו למכשירי האמולציה ולא תידרש תצורה נוספת. אפשרות זו כרוכה בתקורה משמעותית ואינה נתמכת על ידי כל הספקים - גם ביישום פחות עתיר משאבים, כאשר במקום לחקות התקן גרפי אמיתי, מועברת הפשטה (framebuffer) פשוטה למכונה הוירטואלית. לפעמים שרת VNC קשור לשרת X פועל, אבל שיטה זו מתאימה יותר לגישה למכונה פיזית, ובווירטואלי היא יוצרת מספר קשיים טכניים. הדרך הקלה ביותר להתקין שרת VNC היא באמצעות שרת X מובנה. הוא אינו דורש מכשירים פיזיים (מתאם וידאו, מקלדת ועכבר) או אמולציה שלהם באמצעות היפרוויזר, ולכן מתאים לכל סוג של VPS.
התקנה ותצורה
נצטרך מכונה וירטואלית עם Ubuntu Server 18.04 LTS בתצורת ברירת המחדל שלו. ישנם מספר שרתי VNC במאגרים הסטנדרטיים של הפצה זו: , , ואחרים. התמקמנו על TigerVNC - מזלג נוכחי של TightVNC, שאינו נתמך על ידי היזם. הגדרת שרתים אחרים נעשית באופן דומה. אתה גם צריך לבחור סביבת שולחן עבודה: האפשרות האופטימלית, לדעתנו, תהיה XFCE בשל הדרישות הנמוכות יחסית למשאבי מחשוב. מי שרוצה יכול להתקין עוד DE או WM: הכל תלוי בהעדפות אישיות, אבל בחירת התוכנה משפיעה ישירות על הצורך ב-RAM ובליבות מחשוב.

התקנת סביבת שולחן העבודה עם כל התלות מתבצעת באמצעות הפקודה הבאה:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utilsבשלב הבא עליך להתקין את שרת VNC:
sudo apt-get install tigervnc-standalone-server tigervnc-commonלהפעיל אותו בתור משתמש-על זה רעיון רע. צור משתמש וקבוצה:
sudo adduser vnc 
בואו נוסיף את המשתמש לקבוצת sudo כדי שיוכל לבצע משימות הקשורות לניהול. אם אין צורך כזה, אתה יכול לדלג על שלב זה:
sudo gpasswd -a vnc sudoהשלב הבא הוא להפעיל את שרת VNC עם הרשאות משתמש vnc כדי ליצור סיסמה מאובטחת וקובצי תצורה בספרייה ~/.vnc/. אורך הסיסמה יכול להיות בין 6 ל-8 תווים (תווים נוספים נחתכים). במידת הצורך נקבעת גם סיסמה לצפייה בלבד, כלומר. ללא גישה למקלדת ועכבר. הפקודות הבאות מבוצעות כמשתמש vnc:
su - vnc
vncserver -localhost no 
כברירת מחדל, פרוטוקול RFB משתמש בטווח יציאות TCP מ-5900 ל-5906 - זה מה שנקרא. יציאות תצוגה, כל אחת תואמת למסך שרת X. במקרה זה, היציאות משויכות למסכים מ-:0 עד :6. מופע שרת ה-VNC שהשקנו מאזין ליציאה 5901 (מסך: 1). מופעים אחרים יכולים לעבוד על יציאות אחרות עם מסכים :2, :3 וכו'. לפני הגדרה נוספת, עליך לעצור את השרת:
vncserver -kill :1הפקודה אמורה להציג משהו כמו זה: "Killing Xtigervnc process ID 18105... success!"
כאשר TigerVNC מתחיל, הוא מריץ את הסקריפט ~/.vnc/xstartup כדי להגדיר את הגדרות התצורה. בואו ניצור סקריפט משלנו, תחילה נשמור עותק גיבוי של הקיים, אם הוא קיים:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartupהפעלת סביבת שולחן העבודה של XFCE מופעלת על ידי סקריפט xstartup הבא:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &הפקודה xrdb נדרשת כדי ש-VNC יקרא את קובץ ה-.Xresources בספריית הבית. שם המשתמש יכול להגדיר הגדרות שולחן עבודה גרפיות שונות: עיבוד גופנים, צבעי מסוף, ערכות נושא של סמן וכו'. יש להפוך את הסקריפט לניתן להפעלה:
chmod 755 ~/.vnc/xstartupזה משלים את הגדרת שרת VNC. אם תפעיל אותו עם הפקודה vncserver -localhost no (כמשתמש vnc), תוכל להתחבר עם הסיסמה שצוינה קודם לכן ולראות את התמונה הבאה:

התחלת שירות באמצעות systemd
הפעלה ידנית של שרת VNC אינה מתאימה לשימוש קרבי, ולכן נגדיר שירות מערכת. הפקודות מבוצעות כ-root (אנו משתמשים ב-sudo). ראשית, בואו ניצור קובץ יחידה חדש עבור השרת שלנו:
sudo nano /etc/systemd/system/vncserver@.serviceהסמל @ בשם מאפשר לך להעביר ארגומנט להגדרת השירות. במקרה שלנו, הוא מציין את יציאת התצוגה של VNC. קובץ היחידה מורכב ממספר חלקים:
[Unit]
Description=TigerVNC server
After=syslog.target network.target
[Service]
Type=simple
User=vnc
Group=vnc
WorkingDirectory=/home/vnc
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.targetלאחר מכן עליך להודיע למערכת על הקובץ החדש ולהפעיל אותו:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.serviceהמספר 1 בשם מציין את מספר המסך.
עצור את שרת VNC, הפעל אותו כשירות ובדוק את המצב:
# от имени пользователя vnc
vncserver -kill :1# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1אם השירות פועל, אנחנו צריכים לקבל משהו כזה.

חיבור לשולחן העבודה
התצורה שלנו אינה משתמשת בהצפנה, כך שתוקפים יכולים ליירט מנות רשת. בנוסף, בשרתי VNC לעתים קרובות למדי , אז לא כדאי לפתוח אותם לגישה מהאינטרנט. כדי להתחבר בצורה מאובטחת במחשב המקומי שלך, עליך לארוז את התעבורה לתוך מנהרת SSH ולאחר מכן להגדיר לקוח VNC. ב-Windows, אתה יכול להשתמש בלקוח SSH גרפי (לדוגמה, PuTTY). מטעמי אבטחה, TigerVNC בשרת מאזין רק ל-localhost ואינו נגיש ישירות מרשתות ציבוריות:
sudo netstat -ap |more 
ב-Linux, FreeBSD, OS X ומערכות הפעלה אחרות דמויות UNIX, מנהרה ממחשב הלקוח נעשית באמצעות כלי השירות ssh (sshd חייב לפעול בשרת VNC):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ipהאפשרות -L קושרת את יציאה 5901 של החיבור המרוחק ליציאה 5901 ב-localhost. האפשרות -C מאפשרת דחיסה, והאפשרות -N אומרת ל-ssh לא לבצע את הפקודה מרחוק. האפשרות -l מציינת כניסה עבור כניסה מרחוק.
לאחר הגדרת המנהרה במחשב המקומי, עליך להפעיל את לקוח VNC וליצור חיבור למארח 127.0.0.1:5901 (localhost:5901), באמצעות הסיסמה שצוינה קודם לכן כדי לגשת לשרת VNC. כעת אנו יכולים לתקשר בצורה מאובטחת באמצעות מנהרה מוצפנת עם סביבת שולחן העבודה הגרפית XFCE ב-VPS. בצילום המסך, כלי השירות העליון פועל באמולטור המסוף כדי להראות את הצריכה הנמוכה של משאבי מחשוב של המכונה הוירטואלית. אז הכל יהיה תלוי ביישומי משתמש.

אתה יכול להתקין ולהגדיר שרת VNC בלינוקס כמעט בכל VPS. הדבר אינו מצריך תצורות יקרות ועתירות משאבים עם אמולציה של מתאם וידאו או רכישת רישיונות תוכנה מסחריים. בנוסף לאפשרות שירות המערכת ששקלנו, ישנם אחרים: הפעל במצב daemon (דרך /etc/rc.local) כאשר המערכת מאתחלת או לפי דרישה באמצעות inetd. האחרון מעניין ליצירת תצורות מרובות משתמשים. שרת הסופר-אינטרנט יתחיל את שרת ה-VNC ויחבר את הלקוח אליו, ושרת ה-VNC יצור מסך חדש ויתחיל את ההפעלה. כדי לבצע אימות בתוכו, אתה יכול להשתמש במנהל תצוגה גרפית (לדוגמה, ), ולאחר ניתוק הלקוח, ההפעלה תיסגר וכל התוכניות שעובדות עם המסך יסתיימו.
מקור: www.habr.com
