במאמר הזה מוסבר איך להתחבר למכונה וירטואלית (VM) באמצעות כתובת ה-IP הפנימית שלה, דרך מכונה וירטואלית של יעד מבוצר (bastion host). יעדים מבוצרים מספקים נקודת כניסה חיצונית לרשת של ענן וירטואלי פרטי (VPC) שמכילה מכונות וירטואליות ללא כתובות IP חיצוניות. כשמשתמשים ביעד מבוצר, קודם מתחברים אליו ואז מתחברים למכונה הווירטואלית.
התחברות למכונה וירטואלית באמצעות כתובת ה-IP הפנימית שלה שימושית אם למכונה הווירטואלית אין כתובת IP חיצונית. אם למכונה הווירטואלית יש כתובת IP חיצונית, מתחברים למכונה הווירטואלית באמצעות כתובת ה-IP החיצונית שלה. אם אתם צריכים להתחבר למכונה וירטואלית שאין לה כתובות IP חיצוניות ואתם לא יכולים להשתמש ביעד מבוצר, עיינו בשיטות האחרות שמפורטות במאמר בחירת אפשרות חיבור למכונות וירטואליות פנימיות בלבד.
מערכות הפעלה נתמכות
מערכת Compute Engine תומכת בשיטות החיבור האלה לכל תמונות Linux הציבוריות. בתמונות של Fedora CoreOS, צריך להגדיר גישת SSH לפני שמשתמשים בשיטות האלה.
יצירת מכונה וירטואלית של יעד מבוצר (bastion host)
יוצרים מכונה וירטואלית של Compute Engine ברשת ה-VPC המטורגטת, שתשמש כיעד מבוצר.
המסוף
כדי ליצור מכונה וירטואלית של יעד מבוצר (bastion host):
נכנסים לדף Create an instance במסוף Google Cloud .
מציינים את פרטי ה-VM הבאים:
שם: השם של המכונה הווירטואלית.
סוג המכונה: סוג המכונה. בוחרים סוג מכונה קטן, כמו
e2-micro.דיסק אתחול > מערכת הפעלה: כל מערכת הפעלה של Linux.
מרחיבים את הקטע Advanced options ומבצעים את הפעולות הבאות:
בקטע Network interfaces, בוחרים את אותה רשת VPC ואת אותה רשת משנה כמו של ה-VM המטורגט.
בשדה External IPv4 address, בוחרים באפשרות Ephemeral.
כדי ליצור את המכונה הווירטואלית ולהפעיל אותה, לוחצים על Create.
gcloud
יוצרים מכונה וירטואלית של יעד מבוצר (bastion host) באמצעות הפקודה gcloud compute instances create:
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
כדי ליצור את המכונה הווירטואלית של היעד המבוצר, מריצים את הפקודה הבאה:
gcloud compute instances create BASTION_NAME \ --zone=ZONE \ --machine-type=e2-micro \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --network-interface=subnet=SUBNET
מחליפים את מה שכתוב בשדות הבאים:
-
BASTION_NAME: השם של המכונה הווירטואלית של היעד המבוצר. -
ZONE: האזור של המכונה הווירטואלית של היעד המבוצר. -
IMAGE_FAMILY: משפחת אימג'ים של Linux. -
IMAGE_PROJECT: פרויקט התמונה שמכיל את התמונה. -
SUBNET: אותה רשת משנה של VPC כמו של המכונה הווירטואלית המטורגטת. אם משתמשים ברשת ברירת המחדל של VPC, מגדירים אתSUBNETל-default.
-
התחברות למכונות וירטואליות
כדי להתחבר למכונה וירטואלית, מבצעים את השלבים באחת מהכרטיסיות הבאות.
gcloud
מתחברים למכונה הווירטואלית דרך יעד מבוצר באמצעות SSH, ומריצים את הפקודה gcloud compute ssh:
מריצים את הפקודה הבאה כדי להתחבר למכונה הווירטואלית של היעד המבוצר:
gcloud compute ssh BASTION_NAME \ --project=PROJECT_ID \ --zone=ZONEמחליפים את מה שכתוב בשדות הבאים:
-
BASTION_NAME: השם של המכונה הווירטואלית של היעד המבוצר. -
PROJECT_ID: מזהה הפרויקט שמכיל את המכונה הווירטואלית של היעד המבוצר. -
ZONE: שם האזור שבו נמצאת המכונה הווירטואלית של היעד המבוצר.
-
מהמכונה הווירטואלית של היעד המבוצר, מתחברים למכונה הווירטואלית של היעד באמצעות כתובת ה-IP הפנימית שלה, בעזרת הדגל
--internal-ip:gcloud compute ssh INSTANCE_NAME \ --zone=TARGET_ZONE \ --internal-ipמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של המכונה הווירטואלית שאליה רוצים להתחבר. -
TARGET_ZONE: שם האזור שבו נמצאת ה-VM המטורגטת.
-
לקוח OpenSSH
כדי להתחבר למכונה וירטואלית דרך יעד מבוצר מלקוח OpenSSH:
- אם עדיין לא הוספתם מפתח SSH, הוסיפו מפתח SSH למכונה הווירטואלית של היעד המבוצר ולמכונה הווירטואלית של היעד.
במסוף Google Cloud , נכנסים לדף VM instances ומחפשים את כתובת ה-IP החיצונית של המכונה הווירטואלית של היעד המבוצר, ואת כתובת ה-IP הפנימית של המכונה הווירטואלית שאליה רוצים להתחבר.
- פותחים טרמינל בתחנת העבודה.
מתחברים למכונה הווירטואלית של היעד המבוצר באמצעות הפקודה הבאה:
ssh -A -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP
מחליפים את מה שכתוב בשדות הבאים:
-
PATH_TO_PRIVATE_KEY: הנתיב לקובץ של מפתח ה-SSH הפרטי שתואם למפתח הציבורי שהוספתם למכונה הווירטואלית, כמו~/.ssh/my-ssh-key, או~/.ssh/google_compute_engineאם ה-CLI של Google Cloud יצר את המפתח. -
USERNAME: שם המשתמש שלכם ב- שם המשתמש הוא מה שציינתם כשיצרתם את מפתח ה-SSH. -
EXTERNAL_IP: כתובת ה-IP החיצונית של המכונה הווירטואלית של היעד המבוצר.
-
מהמכונה הווירטואלית של היעד המבוצר, מתחברים דרך כתובת ה-IP הפנימית של המכונה הווירטואלית באמצעות הפקודה הבאה:
ssh USERNAME@INTERNAL_IP
מחליפים את מה שכתוב בשדות הבאים:
-
USERNAME: שם המשתמש שלכם ב- שם המשתמש הוא מה שציינתם כשיצרתם את מפתח ה-SSH. -
INTERNAL_IP: כתובת ה-IP הפנימית של ה-VM.
-
אפליקציית PuTTY
כדי להתחבר למכונה וירטואלית דרך יעד מבוצר באמצעות PuTTY:
- אם עדיין לא הוספתם מפתח SSH, הוסיפו מפתח SSH למכונה הווירטואלית של היעד המבוצר ולמכונה הווירטואלית של היעד.
- אם אפליקציית PuTTY לא מותקנת בתחנת העבודה, הורידו את קובצי החבילה של PuTTY.
במסוף Google Cloud , נכנסים לדף VM instances ומחפשים את כתובת ה-IP החיצונית של המכונה הווירטואלית של היעד המבוצר, ואת כתובת ה-IP הפנימית של המכונה הווירטואלית שאליה רוצים להתחבר.
- פותחים את אפליקציית PuTTY. נפתח חלון להגדרת החיבור.
בשדה שם מארח (או כתובת IP), מזינים את שם המשתמש שמשויך למפתח ה-SSH ואת כתובת ה-IP החיצונית של ה-VM של היעד המבוצר. צריך להשתמש בפורמט הבא:
USERNAME@EXTERNAL_IP
מחליפים את מה שכתוב בשדות הבאים:
-
USERNAME: שם המשתמש שלכם ב- שם המשתמש הוא מה שציינתם כשיצרתם את מפתח ה-SSH. -
EXTERNAL_IP: כתובת ה-IP החיצונית של המכונה הווירטואלית של היעד המבוצר.
-
- בתפריט Category, עוברים אל Connection > SSH > Auth > Credentials (או אל Connection > SSH > Auth בגרסאות PuTTY שקודמות ל-0.78).
- בשדה Private key file for authentication, לוחצים על Browse ובוחרים את קובץ מפתח ה-SSH הפרטי (
.ppk) שתואם למפתח הציבורי שהוספתם למכונה הווירטואלית. - בתפריט Category, עוברים אל Connection > SSH > Auth, ובקטע Authentication parameters בוחרים באפשרות Allow agent forwarding.
- לוחצים על Open כדי להתחבר למכונה הווירטואלית של היעד המבוצר.
מהמכונה הווירטואלית של היעד המבוצר, מתחברים דרך כתובת ה-IP הפנימית של המכונה הווירטואלית באמצעות הפקודה הבאה:
ssh USERNAME@INTERNAL_IP
מחליפים את מה שכתוב בשדות הבאים:
-
USERNAME: שם המשתמש שלכם ב- שם המשתמש הוא מה שציינתם כשיצרתם את מפתח ה-SSH. -
INTERNAL_IP: כתובת ה-IP הפנימית של ה-VM.
-
פתרון בעיות
במאמר פתרון בעיות ב-SSH מוסבר איך לאבחן ולפתור בעיות בחיבורי SSH שנכשלו.
המאמרים הבאים
- איך מעבירים קבצים למכונות וירטואליות
- הסבר על חיבורי SSH למכונות וירטואליות של Linux ב-Compute Engine.