כיצד להתקין ולהגדיר VNC על Ubuntu 22.04

הקדמה

Virtual Network Computing, או VNC, הוא מערכת חיבור שמאפשרת לך להשתמש במקלדת ובעכבר שלך כדי להתקשר עם סביבת שולחן עבודה גרפית על שרת רחוק. זה עוזר לניהול קבצים, תוכנות והגדרות על שרת רחוק בקלות יותר עבור משתמשים שעדיין לא נוחים עם שורת הפקודה.

במדריך זה, תקינו שרת VNC עם TightVNC על שרת Ubuntu 22.04 ותתחברו אליו באופן מאובטח דרך טונל SSH. לאחר מכן, תשתמשו בתוכנת לקוח VNC על המחשב המקומי שלכם כדי להתקשר עם השרת שלכם דרך סביבת שולחן עבודה גרפית.

דרישות מוקדמות

כדי להשלים את המדריך הזה, תצטרכו:

שלב 1 — התקנת מרכיבי שולחן עבודה ושרת VNC

בברירת מחדל, שרת Ubuntu 22.04 לא מגיע עם סביבת שולחן עבודה גרפית או שרת VNC מותקן, לכן תתחילו על ידי התקנתם.

יש לכם מספר אפשרויות לבחירת השרת VNC והסביבת שולחן העבודה שתבחרו. במדריך זה, תתקין חבילות עבור סביבת השולחן העבודה Xfce העדכנית ביותר וחבילת TightVNC הזמינה ממאגר החבילות הרשמי של Ubuntu. כמו כן, ה-Xfce וה-TightVNC מפורסמים בעיקר בקלילותם ומהירותם, דבר שיסייע לוודא כי החיבור VNC יהיה חלק ויציב גם על חיבורי אינטרנט איטיים.

לאחר התחברות לשרת באמצעות SSH, עדכנו את רשימת החבילות:

  1. sudo apt update

עכשיו התקינו את Xfce יחד עם חבילת xfce4-goodies, הכוללת מספר שיפורים עבור סביבת השולחן העבודה:

  1. sudo apt install xfce4 xfce4-goodies

במהלך ההתקנה, עשוי להתבקש ממך לבחור במנהל תצוגה ברירת מחדל עבור Xfce. מנהל התצוגה הוא תוכנה שמאפשרת לך לבחור ולהיכנס לסביבת שולחן עבודה דרך ממשק גרפי. תשתמש רק ב-Xfce כאשר תתחבר עם לקוח VNC, ובמהלך המפגשים האלה תהיה כבר מחובר כמשתמש של Ubuntu שאינו בשורש. לכן, למטרת המדריך הזה, בחירתך במנהל תצוגה אינה רלוונטית. בחר אחת ולחץ ENTER.

לאחר שההתקנה הסתיימה, התקן את שרת ה-TightVNC:

  1. sudo apt install tightvncserver

לבצע את הפקודה vncserver כדי להגדיר סיסמת גישה ל-VNC, ליצור את קבצי התצורה הראשוניים, ולהתחיל מופע שרת VNC:

  1. 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:

  1. vncpasswd

בנקודה זו, השרת VNC מותקן ורץ. כעת תגדיר אותו כך שישיק את Xfce ויאפשר לנו גישה לשרת דרך ממשק גרפי.

שלב 2 — קביעת הגדרות לשרת VNC

לשרת VNC יש צורך לדעת אילו פקודות להפעלה בעת התחלתו. יש לוודא שפקודות אלו תפעל עם ממשק שולחן העבודה הגרפי המתאים.

הפקודות שהשרת VNC מפעיל בעת התחלתו נמצאות בקובץ התצורה הנקרא xstartup בתיקיית ה- .vnc תחת הספרייה הביתית שלך. סקריפט ההתחלה נוצר כאשר הרצת את הפקודה vncserver בשלב הקקודם, אך תיצור סקריפט משלך לשיקת שולחן העבודה הגרפי Xfce.

כי אתה הולך לשנות איך השרת VNC מוגדר, תשהה תחילה את מופע שרת ה-VNC שפועל על פתח 5901 עם הפקודה הבאה:

  1. vncserver -kill :1

הפלט יראה דומה לזה, אם כי תראה PID שונה:

Output
Killing Xtightvnc process ID 17648

לפני שתשנה את קובץ ה-xstartup, גבה את המקורי:

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

כעת צור קובץ xstartup חדש ופתח אותו בעורך טקסט, כמו nano:

  1. nano ~/.vnc/xstartup

לאחר מכן הוסף את השורות הבאות לקובץ:

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

השורה הראשונה היא shebang. בקבצי טקסט רגילים הניתנים להרצה ב-*nix, ה-shebang אומר למערכת איזה מפרש להעביר את הקובץ אליו לביצוע. במקרה זה, אתה מעביר את הקובץ למפרש Bash. זה יאפשר לכל שורה רצופה להתבצע כפקודות, בסדר.

הפקודה הראשונה בקובץ, xrdb $HOME/.Xresources, אומרת למערכת ה-GUI של VNC לקרוא את קובץ ה-.Xresources של המשתמש בשרת. .Xresources הוא המקום שבו המשתמש יכול לבצע שינויים בהגדרות מסוימות של שולחן העבודה הגרפי, כמו צבעי טרמינל, ערכות סמן ועיבוד גופן. הפקודה השנייה אומרת לשרת להפעיל את Xfce. בכל פעם שאתה מפעיל או משנה שוב את שרת ה-VNC, הפקודות הללו יתבצעו אוטומטית.

שמור וסגור את הקובץ לאחר שהוספת את השורות הללו. אם השתמשת ב-nano, עשה זאת על ידי לחיצה על CTRL + X, Y, אז ENTER.

כדי לוודא ששרת ה-VNC יכול להשתמש בקובץ האתחול החדש הזה בצורה תקינה, עליך להפוך אותו לנפרש:

  1. chmod +x ~/.vnc/xstartup

אז נאפשר שוב את שרת ה- VNC:

  1. vncserver -localhost

שים לב שהפעם הפקודה כוללת את האפשרות -localhost, שמקשרת את שרת ה- VNC לאינטרפייס לולאה של השרת שלך. זה יגרום ל-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. אתה יכול לעשות זאת דרך הטרמינל ב-Linux או macOS עם הפקודה הבאה של ssh:

  1. 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 מאפשר לך לציין את המשתמש שאתה רוצה להתחבר כאשר אתה מתחבר לשרת. ודא כי אתה מחליף את sammy ואת your_server_ip בשם המשתמש הלא רוט שלך וכתובת ה־IP של השרת שלך.

הערה: פקודה זו יוצרת טונל SSH שמעביר מידע מיציאה 5901 בשרת VNC שלך אל היציאה 59000 במחשב המקומי שלך דרך יציאה 22 בכל מחשב, היציאה הברירת מחדלית ל־SSH. בהנחה שקיימים אצלך דרישות קדם הגדרות השרת הראשוניות עבור Ubuntu 22.04, תוסיף כלל UFW לאפשר חיבורים לשרת שלך דרך OpenSSH.

זה יותר מאובטח מפתיחה פשוטה של חומת האש של השרת שלך כדי לאפשר חיבורים לפתח 5901, מאשר לאפשר לכל אחד לגשת לשרת שלך דרך VNC. על ידי התחברות דרך טונל SSH, אתה מגביל גישת VNC למכשירים שכבר יש להם גישה SSH לשרת.

אם אתה משתמש ב- PuTTY כדי להתחבר לשרת שלך, אתה יכול ליצור טונל SSH על ידי לחיצה ימנית על סרגל העליון של חלון הטרמינל, ואז ללחוץ על האפשרות Change Settings…:

מצא את הענף Connection בתפריט העץ בצד שמאל של חלון ההגדרות החדש של PuTTY. פתח את הענף SSH ולחץ על Tunnels. על מסך Options controlling SSH port forwarding, הזן 59000 כ- Source Port ו- localhost:5901 כ- Destination, כמו כן:

לאחר מכן לחץ על הלחצן Add, ואז על הלחצן Apply כדי ליישם את הטונל.

ברגע שהטונל פועל, השתמש בלקוח VNC כדי להתחבר אל localhost:59000. יתבקש ממך לאמת באמצעות הסיסמה שהגדרת בשלב 1.

ברגע שתתחבר, תראה את שולחן העבודה המותקן Xfce. הוא צריך להיראות משהו כמו זה:

ניתן לגשת לקבצים בתיקיית הבית שלך עם מנהל הקבצים או מהשורת פקודה, כפי שניתן לראות כאן:

לחץ על CTRL+C בטרמינל המקומי שלך כדי לעצור את טונל ה-SSH ולחזור להוראת ההזנה שלך. זה ינתק גם את הסשן של VNC.

כעת אתה יכול להגדיר את שרת ה- VNC שלך כסיסמאות של systemd.

שלב 4 — הפעלת VNC כשירות של המערכת

על ידי הגדרת שרת ה־VNC לרוץ כשירות systemd, תוכל להתחיל, לעצור ולאתחל אותו ככל הצורך, כמו כל שירות אחר. בנוסף, תוכל גם להשתמש בפקודות ניהול של systemd כדי לוודא שה־VNC מתחיל כאשר השרת מתנטש.

ראשית, צור קובץ יחידה חדש בשם /etc/systemd/system/[email protected]:

  1. sudo nano /etc/systemd/system/[email protected]

הסמל @ בסוף השם יאפשר לנו להעביר ארגומנט שתוכל להשתמש בו בתצורת השירות. תשתמש בזה כדי לציין את פתח תצוגת ה־VNC שברצונך להשתמש בו בעת ניהול השירות.

הוסף את השורות הבאות לקובץ. וודא שאתה משנה את הערך של User, Group, WorkingDirectory, ושם המשתמש בערך של 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.

שמור וסגור את הקובץ.

בשלב הבא, הפוך את המערכת למודעה לקובץ היחידה החדש:

  1. sudo systemctl daemon-reload

הפעל את קובץ היחידה:

  1. sudo systemctl enable [email protected]

הַקוֹד 1 שֶׁמּוּצָרְתוֹ אַחֲרֵי הָאוֹת @ מַצְיִין אֵיזוֹ מַסְךְ הַשֵּירוּת צָצְרִיכָה לְהִוָּפֵק עַל־יְדֵי, בַּמְקוֹם הַמְּרֻגָּשָׁת :1 כְּמוֹ שנדובר בשלב 2.

עצור אֶת הַמקרה הַנוֹוכֵחַ שֶׁל שֵירוּת הַVNC אִם הִיא עוֹד רָצָה:

  1. vncserver -kill :1

לְאַחַר מִכֵּן הַתְּחִיל אוֹתָה כַּמוֹ שֶׁתְּתַחְיֵיל כָּל שֵׁרוּת systemd אַחֵרָה:

  1. sudo systemctl start vncserver@1

נִיתָן לְוַדּוֹאי לְאַמֵּת כִּי הִתְחִיל עם פְּקוּדָה זוֹ:

  1. sudo systemctl status vncserver@1

אִם הַתְחִלָה נִכוֹנָה, הַפָּלט צָרִיךְ לִרְאוֹת כֵּן:

Output
[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 שֶׁלְְךָ מוּכָּן כְּעֵת לַשְׁמֵשׁ כְּאָשֶׁר הַשֵּרְתָה שֶׁלְךָ מִתְחַלֵּקֶת, וְנִיתָן לִנְהוֹל אוֹתָהּ באמצעות פקודות systemctl כְּכָל שֵׁרוּת systemd אַחֵרָה.

אֲךָ לֹא תַהַוְתָּה שׁוּם שִׁינוּי בְּצַד הַלקוֹחַ. לְהַתְחָבֵּר מחֲדָשׁ, הַתְּחָל אֶת הַמנה הַתקשורֶת שֶׁלְךָ בְּSSH שוּב:

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

לְאַחַר מִכֵּן צוּר חִיבוּר חָדָשׁ בְּאמצּעוּת תוֹכנַת הַלקוֹחַ שֶׁלְְךָ לַ localhost:59000 כְּדי לְהִתְחַבֵּר אֶל הַשֵּרְתָה שֶׁלְךָ.

מַסּוֹכֵּם

עַכְשָׁיו יֶשְׁ לְךָ שֵׁרוּת VNC מְאוּבָטַת עַל הַשֵּרְתָה שֶׁלְךָ Ubuntu 22.04. עַכְשָׁיו אַתָּה יָכוֹל לִנְהוֹל אֶת הַקוֹבָץ, הַתַּכְנָה וְהָגְדָּרוֹת שֶׁלְךָ בְּמַמְשֵׁק גְּרָפִי יְדֵידוֹתִי, וְאַתָּה יָכוֹל לְהַפְעִיל תַּכְנָות גְּר

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-22-04