הקדמה
Virtual Network Computing, או VNC, הוא מערכת חיבור שמאפשרת לך להשתמש במקלדת ובעכבר שלך כדי להתקשר עם סביבת שולחן עבודה גרפית על שרת רחוק. זה עוזר לניהול קבצים, תוכנות והגדרות על שרת רחוק בקלות יותר עבור משתמשים שעדיין לא נוחים עם שורת הפקודה.
במדריך זה, תקינו שרת VNC עם TightVNC על שרת Ubuntu 22.04 ותתחברו אליו באופן מאובטח דרך טונל SSH. לאחר מכן, תשתמשו בתוכנת לקוח VNC על המחשב המקומי שלכם כדי להתקשר עם השרת שלכם דרך סביבת שולחן עבודה גרפית.
דרישות מוקדמות
כדי להשלים את המדריך הזה, תצטרכו:
- שרת Ubuntu 22.04 אחד עם משתמש מנהל לא רוט וצריבה מוגדרת עם UFW. כדי להגדיר זאת, עקבו אחר מדריך הגדרת השרת הראשונית שלנו עבור Ubuntu 22.04.
- A local computer with a VNC client installed. The VNC client you use must support connections over SSH tunnels:
שלב 1 — התקנת מרכיבי שולחן עבודה ושרת VNC
בברירת מחדל, שרת Ubuntu 22.04 לא מגיע עם סביבת שולחן עבודה גרפית או שרת VNC מותקן, לכן תתחילו על ידי התקנתם.
יש לכם מספר אפשרויות לבחירת השרת VNC והסביבת שולחן העבודה שתבחרו. במדריך זה, תתקין חבילות עבור סביבת השולחן העבודה Xfce העדכנית ביותר וחבילת TightVNC הזמינה ממאגר החבילות הרשמי של Ubuntu. כמו כן, ה-Xfce וה-TightVNC מפורסמים בעיקר בקלילותם ומהירותם, דבר שיסייע לוודא כי החיבור VNC יהיה חלק ויציב גם על חיבורי אינטרנט איטיים.
לאחר התחברות לשרת באמצעות SSH, עדכנו את רשימת החבילות:
עכשיו התקינו את Xfce יחד עם חבילת xfce4-goodies
, הכוללת מספר שיפורים עבור סביבת השולחן העבודה:
במהלך ההתקנה, עשוי להתבקש ממך לבחור במנהל תצוגה ברירת מחדל עבור Xfce. מנהל התצוגה הוא תוכנה שמאפשרת לך לבחור ולהיכנס לסביבת שולחן עבודה דרך ממשק גרפי. תשתמש רק ב-Xfce כאשר תתחבר עם לקוח VNC, ובמהלך המפגשים האלה תהיה כבר מחובר כמשתמש של Ubuntu שאינו בשורש. לכן, למטרת המדריך הזה, בחירתך במנהל תצוגה אינה רלוונטית. בחר אחת ולחץ ENTER
.
לאחר שההתקנה הסתיימה, התקן את שרת ה-TightVNC:
לבצע את הפקודה vncserver
כדי להגדיר סיסמת גישה ל-VNC, ליצור את קבצי התצורה הראשוניים, ולהתחיל מופע שרת VNC:
תתבקש להזין ולאמת סיסמה לגישה מרחוק למחשב שלך:
OutputYou will require a password to access your desktops.
Password:
Verify:
הסיסמה חייבת להיות בין שישה לשמונה תווים אורכו. סיסמאות בעלות יותר מ-8 תווים ייחתכו אוטומטית.
לאחר אימות הסיסמה, תהיה לך אפשרות ליצור סיסמה לצפייה בלבד. משתמשים שמתחברים עם סיסמת הצפייה בלבד לא יוכלו לשלוט במופע VNC בעזרת העכבר או המקלדת שלהם. זוהי אפשרות מועילה אם ברצונך להדגיש משהו לאנשים אחרים באמצעות שרת VNC שלך, אך זה אינו דרוש.
התהליך יוצר את קבצי התצורה הברירתיים הנדרשים ומידע חיבור עבור השרת. בנוסף, הוא משיק מופע שרת ברירתי בפתחה 5901
. פתח זה נקרא פורט התצוגה, ונקרא על ידי VNC כ- :1
. VNC יכול להשיק מספר מופעים בפורטים התצוגה השונים, עם :2
מפנה לפתח 5902
, :3
מפנה ל 5903
, וכן הלאה:
OutputWould 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
:
בנקודה זו, השרת VNC מותקן ורץ. כעת תגדיר אותו כך שישיק את Xfce ויאפשר לנו גישה לשרת דרך ממשק גרפי.
שלב 2 — קביעת הגדרות לשרת VNC
לשרת VNC יש צורך לדעת אילו פקודות להפעלה בעת התחלתו. יש לוודא שפקודות אלו תפעל עם ממשק שולחן העבודה הגרפי המתאים.
הפקודות שהשרת VNC מפעיל בעת התחלתו נמצאות בקובץ התצורה הנקרא xstartup
בתיקיית ה- .vnc
תחת הספרייה הביתית שלך. סקריפט ההתחלה נוצר כאשר הרצת את הפקודה vncserver
בשלב הקקודם, אך תיצור סקריפט משלך לשיקת שולחן העבודה הגרפי Xfce.
כי אתה הולך לשנות איך השרת VNC מוגדר, תשהה תחילה את מופע שרת ה-VNC שפועל על פתח 5901
עם הפקודה הבאה:
הפלט יראה דומה לזה, אם כי תראה PID שונה:
OutputKilling Xtightvnc process ID 17648
לפני שתשנה את קובץ ה-xstartup
, גבה את המקורי:
כעת צור קובץ xstartup
חדש ופתח אותו בעורך טקסט, כמו nano
:
לאחר מכן הוסף את השורות הבאות לקובץ:
#!/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 יכול להשתמש בקובץ האתחול החדש הזה בצורה תקינה, עליך להפוך אותו לנפרש:
אז נאפשר שוב את שרת ה- VNC:
שים לב שהפעם הפקודה כוללת את האפשרות -localhost
, שמקשרת את שרת ה- VNC לאינטרפייס לולאה של השרת שלך. זה יגרום ל-VNC להתיר חיבורים שרק מגיעים מהשרת עליו הוא מותקן.
בשלב הבא, תקין טונל SSH בין המחשב המקומי שלך והשרת שלך, ובעצם תפתור את VNC כך שיחשב כי החיבור מהמחשב המקומי שלך התחיל בשרת שלך. האספקה הזו תוסיף שכבת אבטחה נוספת סביב ל-VNC, מאחר והמשתמשים היחידים שיכולים לגשת אליו הם אלה שכבר יש להם גישה SSH לשרת שלך.
תראה פלט דומה לזה:
OutputNew '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
:
הנה מה שאפשרויות הפקודה 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]
:
הסמל @
בסוף השם יאפשר לנו להעביר ארגומנט שתוכל להשתמש בו בתצורת השירות. תשתמש בזה כדי לציין את פתח תצוגת ה־VNC שברצונך להשתמש בו בעת ניהול השירות.
הוסף את השורות הבאות לקובץ. וודא שאתה משנה את הערך של User, Group, WorkingDirectory, ושם המשתמש בערך של PIDFILE כך שיתאימו לשמך:
[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
שֶׁמּוּצָרְתוֹ אַחֲרֵי הָאוֹת @
מַצְיִין אֵיזוֹ מַסְךְ הַשֵּירוּת צָצְרִיכָה לְהִוָּפֵק עַל־יְדֵי, בַּמְקוֹם הַמְּרֻגָּשָׁת :1
כְּמוֹ שנדובר בשלב 2.
עצור אֶת הַמקרה הַנוֹוכֵחַ שֶׁל שֵירוּת הַVNC אִם הִיא עוֹד רָצָה:
לְאַחַר מִכֵּן הַתְּחִיל אוֹתָה כַּמוֹ שֶׁתְּתַחְיֵיל כָּל שֵׁרוּת systemd אַחֵרָה:
נִיתָן לְוַדּוֹאי לְאַמֵּת כִּי הִתְחִיל עם פְּקוּדָה זוֹ:
אִם הַתְחִלָה נִכוֹנָה, הַפָּלט צָרִיךְ לִרְאוֹת כֵּן:
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 שוּב:
לְאַחַר מִכֵּן צוּר חִיבוּר חָדָשׁ בְּאמצּעוּת תוֹכנַת הַלקוֹחַ שֶׁלְְךָ לַ localhost:59000
כְּדי לְהִתְחַבֵּר אֶל הַשֵּרְתָה שֶׁלְךָ.
מַסּוֹכֵּם
עַכְשָׁיו יֶשְׁ לְךָ שֵׁרוּת VNC מְאוּבָטַת עַל הַשֵּרְתָה שֶׁלְךָ Ubuntu 22.04. עַכְשָׁיו אַתָּה יָכוֹל לִנְהוֹל אֶת הַקוֹבָץ, הַתַּכְנָה וְהָגְדָּרוֹת שֶׁלְךָ בְּמַמְשֵׁק גְּרָפִי יְדֵידוֹתִי, וְאַתָּה יָכוֹל לְהַפְעִיל תַּכְנָות גְּר
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-22-04