במסמך הזה מוסבר איך להתחבר למכונה וירטואלית (VM) באמצעות כתובת ה-IP הפנימית שלה, באמצעות העברת TCP של שרת Proxy לאימות זהויות (IAP).
העברת TCP ב-IAP מאפשרת ליצור מנהרה מוצפנת שדרכה אפשר להעביר חיבורי SSH למכונות וירטואליות. כשמתחברים למכונה וירטואלית שמשתמשת ב-IAP, חיבור ה-SSH נארז ב-HTTPS לפני שהחיבור מועבר למכונה הווירטואלית. לאחר מכן, IAP בודק אם יש לכם את הרשאות ה-IAM הנדרשות, ואם כן, מעניק גישה ל-VM.
אם אתם צריכים להתחבר למכונה וירטואלית שאין לה כתובות IP חיצוניות ואתם לא יכולים להשתמש ב-IAP, עיינו בשיטות האחרות שמפורטות במאמר אפשרויות חיבור למכונות וירטואליות פנימיות בלבד.
לפני שמתחילים
- יוצרים כלל של חומת אש כדי לאפשר חיבורים מ-IAP.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל.
מערכות הפעלה נתמכות
שיטות החיבור האלה נתמכות בכל התמונות הציבוריות של Linux שזמינות ב-Compute Engine. בתמונות של Fedora CoreOS, צריך להגדיר גישת SSH לפני שמשתמשים בשיטות האלה.
התחברות למכונות וירטואליות
כדי להתחבר למכונה וירטואלית, מבצעים את השלבים באחת מהכרטיסיות הבאות.
המסוף
כדי להעביר חיבורי SSH דרך כתובת IP פנימית של מכונה וירטואלית באמצעות SSH-in-Browser:
- נכנסים לדף VM instances במסוף Google Cloud .
- ברשימת המכונות הווירטואליות, לוחצים על SSH בשורה של המכונה שרוצים להתחבר אליה.
gcloud
כדי להעביר חיבורי SSH דרך כתובת ה-IP הפנימית של המכונה הווירטואלית, משתמשים בפקודה gcloud compute ssh עם הדגל
--tunnel-through-iap:
מריצים את הפקודה הבאה כדי להתחבר למכונה הווירטואלית:
gcloud compute ssh INSTANCE_NAME \ --project=PROJECT_ID \ --zone=ZONE \ --tunnel-through-iapמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה הווירטואלית שאליה רוצים להתחבר. -
PROJECT_ID: מזהה הפרויקט שמכיל את המכונה הווירטואלית. -
ZONE: שם האזור שבו נמצאת המכונה הווירטואלית.
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
IAP Desktop
כדי להתחבר למכונה וירטואלית באמצעות IAP Desktop:
-
מתקינים את IAP Desktop בתחנת העבודה, אם עדיין לא עשיתם את זה.
-
פותחים את IAP Desktop. נפתח החלון Add projects.
-
כשמופיעה בקשה, נכנסים באמצעות חשבון Google שיש לו גישה לפרויקט עם המכונות הווירטואליות שאליהן רוצים להתחבר.
-
בחלון Add projects, מזינים את מזהה הפרויקט או את שם הפרויקט שמכיל את המכונות הווירטואליות שאליהן רוצים להתחבר.
-
בחלון Project Explorer, לוחצים שוב לחיצה ימנית על שם ה-VM ובוחרים באפשרות Connect כדי להתחבר ל-VM.
לקוחות OpenSSH
להתחבר למכונה וירטואלית שאין לה כתובת IP חיצונית באמצעות SSH דרך מנהרת IAP. אתם יכולים לכתוב קובץ תצורה משלכם ל-SSH (~/.ssh/config) כדי שכלים כמו VS Code או לקוח OpenSSH יוכלו להתחבר ישירות.
כדי ליצור ולהפיץ את מפתחות ה-SSH, מתחברים למכונה הווירטואלית לפחות פעם אחת באמצעות הפקודה
gcloud compute ssh:gcloud compute ssh INSTANCE_NAME \ --project=PROJECT_ID \ --zone=ZONE \ --tunnel-through-iapמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה הווירטואלית שאליה רוצים להתחבר. -
PROJECT_ID: מזהה הפרויקט שמכיל את המכונה הווירטואלית. -
ZONE: האזור שבו נמצאת המכונה הווירטואלית.
אחרי שהחיבור מצליח, יוצאים מסשן ה-SSH.
-
פותחים או יוצרים את קובץ התצורה של SSH בתחנת העבודה המקומית. הקובץ הזה נמצא בדרך כלל ב-
~/.ssh/configב-Linux וב-macOS, או ב-%USERPROFILE%\.ssh\configב-Windows.מוסיפים רשומת הגדרה ל-VM על ידי הוספת הבלוק הבא לקובץ ההגדרות של SSH:
Host INSTANCE_NAME HostName INSTANCE_NAME IdentityFile PATH_TO_PRIVATE_KEY ProxyCommand gcloud compute start-iap-tunnel %h %p --listen-on-stdin --project=PROJECT_ID --zone=ZONE --verbosity=warning User USERNAMEמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה הווירטואלית שאליה רוצים להתחבר. -
PATH_TO_PRIVATE_KEY: הנתיב לקובץ המפתח הפרטי, בדרך כלל~/.ssh/google_compute_engine. -
PROJECT_ID: מזהה הפרויקט שמכיל את המכונה הווירטואלית. -
ZONE: האזור שבו נמצאת המכונה הווירטואלית. -
USERNAME: שם המשתמש ב-VM, כמו שם המשתמש שלכם ב- Google Cloud OS Login או שם המשתמש במטא-נתונים.
-
מתחברים למכונה הווירטואלית מהטרמינל המקומי או מלקוח SSH, באמצעות הפקודה הבאה:
ssh INSTANCE_NAME
אפליקציית PuTTY
כדי להעביר חיבורי SSH דרך כתובת IP פנימית של מכונה וירטואלית באמצעות PuTTY:
- אם עדיין לא הוספתם מפתח SSH, הוסיפו מפתח SSH למכונה הווירטואלית.
- אם אפליקציית PuTTY לא מותקנת בתחנת העבודה, הורידו את קובצי החבילה של PuTTY.
נכנסים לדף VM instances במסוף Google Cloud ומחפשים את שם המכונה הווירטואלית שאליה רוצים להתחבר.
- פותחים את אפליקציית PuTTY. נפתח חלון להגדרת החיבור.
בשדה שם מארח (או כתובת IP), מזינים את שם המשתמש שמשויך למפתח ה-SSH ואת שם ה-VM שאליו רוצים להתחבר. צריך להשתמש בפורמט הבא:
USERNAME@INSTANCE_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
USERNAME: שם המשתמש שלכם ב- . אם אתם מנהלים את מפתחות ה-SSH במטא-נתונים, שם המשתמש הוא מה שציינתם כשיצרתם את מפתח ה-SSH. אם אתם משתמשים בחשבונות של OS Login, שם המשתמש מוגדר בפרופיל שלכם ב-Google, למשלcloudysanfrancisco_example_comאוcloudysanfrancisco. -
INSTANCE_NAME: שם המכונה הווירטואלית.
-
- בתפריט Category, עוברים אל Connection > SSH > Auth > Credentials (או אל Connection > SSH > Auth בגרסאות PuTTY שקודמות ל-0.78).
- בשדה Private key file for authentication, לוחצים על Browse ובוחרים את קובץ מפתח ה-SSH הפרטי (
.ppk) שתואם למפתח הציבורי שהוספתם למכונה הווירטואלית. - בתפריט Category, עוברים אל Connection > Proxy.
- בקטע Proxy type, בוחרים באפשרות Local.
בשדה Telnet command, or local proxy command, מזינים את הפקודה הבאה:
gcloud.cmd compute start-iap-tunnel INSTANCE_NAME PORT_NUMBER --listen-on-stdin --project=PROJECT_ID --zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה הווירטואלית שאליה רוצים להתחבר. -
PORT_NUMBER: היציאה שבה פועל ה-daemon שלsshd. ערך ברירת המחדל שלPORT_NUMBERהוא22. -
PROJECT_ID: הפרויקט שמארח את ה-VM שאליו רוצים להתחבר. -
ZONE: האזור שבו נמצאת המכונה הווירטואלית.
-
- לוחצים על Open כדי להתחבר למכונה הווירטואלית.
פתרון בעיות
במאמר פתרון בעיות ב-SSH מוסבר איך לאבחן ולפתור בעיות בחיבורי SSH שנכשלו.
המאמרים הבאים
- איך מנהלים את הגישה למכונות וירטואליות
- איך מעבירים קבצים למכונות וירטואליות
- הסבר על חיבורי SSH למכונות וירטואליות של Linux ב-Compute Engine.