התחברות למכונות וירטואליות של Linux באמצעות יעד מבוצר (bastion host)

במסמך הזה מתואר איך להתחבר למופע של מכונה וירטואלית (VM) דרך כתובת ה-IP הפנימית שלה, באמצעות מכונה וירטואלית של יעד מבוצר (bastion host). מארחי Bastion מספקים נקודת כניסה חיצונית לרשת של ענן וירטואלי פרטי (VPC) שמכילה מכונות וירטואליות שאין להן כתובות IP חיצוניות. כשמשתמשים ביעד מבוצר (bastion host), מתחברים קודם ליעד המבוצר ואז למכונה הווירטואלית (VM) שהיא יעד.

התחברות למכונה וירטואלית באמצעות כתובת ה-IP הפנימית שלה שימושית אם למכונה הווירטואלית אין כתובת IP חיצונית. אם למכונה הווירטואלית יש כתובת IP חיצונית, מתחברים למכונה הווירטואלית באמצעות כתובת ה-IP החיצונית שלה. אם אתם צריכים להתחבר למכונה וירטואלית שאין לה כתובות IP חיצוניות ואתם לא יכולים להשתמש ביעד מבוצר (bastion host), כדאי לעיין בשיטות האחרות שמפורטות במאמר אפשרויות חיבור למכונות וירטואליות פנימיות בלבד.

מערכות הפעלה נתמכות

שיטות החיבור האלה נתמכות בכל התמונות הציבוריות של Linux שזמינות ב-Compute Engine. כדי להשתמש בשיטות האלה בתמונות של Fedora CoreOS, צריך להגדיר גישת SSH.

יצירת מכונה וירטואלית של יעד מבוצר (bastion host)

יוצרים מכונה וירטואלית ב-Compute Engine ברשת הפנימית של האשכול הפרטי, שתשמש כמארח יעד מבוצר (bastion host) לניהול האשכול.

המסוף

כדי ליצור מכונה וירטואלית של יעד מבוצר (bastion host):

  1. נכנסים לדף Create an instance במסוף Google Cloud .

    כניסה לדף Create an instance

    1. מציינים את פרטי מכונת ה-VM הבאים:
    • שם: השם של המכונה הווירטואלית.
    • Machine type: סוג מכונה. בוחרים סוג מכונה קטן, כמו e2-micro.
    • דיסק אתחול מערכת הפעלה: כל מערכת הפעלה של Linux.
  2. מרחיבים את הקטע אפשרויות מתקדמות ומבצעים את הפעולות הבאות:

    1. בקטע Network interfaces, בוחרים את אותה רשת VPC ואת אותה רשת משנה כמו מכונת היעד.

    2. בשדה External IPv4 address, בוחרים באפשרות Ephemeral.

  3. כדי ליצור את המכונה הווירטואלית ולהפעיל אותה, לוחצים על Create (יצירה).

gcloud

יוצרים מכונה וירטואלית של יעד מבוצר (bastion host) באמצעות הפקודה gcloud compute instances create:

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. מריצים את הפקודה הבאה כדי ליצור את המכונה הווירטואלית של יעד מבוצר (bastion host):

    gcloud compute instances create VM_NAME \
      --zone=ZONE \
      --machine-type=e2-micro \
      --image-family=IMAGE_FAMILY \
      --image-project=IMAGE_PROJECT \
      --network-interface=subnet=SUBNET,address=""
    

    מחליפים את מה שכתוב בשדות הבאים:

    • VM_NAME: השם של המכונה הווירטואלית.
    • ZONE: האזור של המכונה הווירטואלית.
    • IMAGE_FAMILY: משפחת תמונות של Linux.
    • IMAGE_PROJECT: פרויקט התמונה שמכיל את התמונה.
    • SUBNET: אותה רשת משנה של VPC כמו המכונה הווירטואלית של היעד. אם משתמשים ב-VPC שמוגדר כברירת מחדל, הערך של SUBNET הוא default.

התחברות למכונות וירטואליות

כדי להתחבר למכונה וירטואלית, מבצעים את השלבים באחת מהכרטיסיות הבאות.

gcloud

כדי להתחבר למכונה וירטואלית באמצעות SSH דרך יעד מבוצר (bastion host), מריצים את הפקודה gcloud compute ssh:

  1. מריצים את הפקודה הבאה כדי להתחבר למכונת ה-VM של יעד מבוצר (bastion host):

    gcloud compute ssh BASTION_NAME

    מחליפים את BASTION_NAME בשם של המכונה הווירטואלית של יעד מבוצר (bastion host).

  2. מהמכונה הווירטואלית של היעד המבוצר (bastion host), מתחברים למכונה הווירטואלית הראשית דרך כתובת ה-IP הפנימית שלה באמצעות הדגל --internal-ip:

    gcloud compute ssh VM_NAME \
        --internal-ip

    מחליפים את VM_NAME בשם המכונה הווירטואלית שרוצים להתחבר אליה.

לקוחות OpenSSH

כדי להתחבר למכונה וירטואלית דרך יעד מבוצר (bastion host) מלקוח OpenSSH:

  1. אם עדיין לא עשיתם זאת, מוסיפים מפתח SSH למכונה הווירטואלית.
  2. נכנסים לדף VM Instances במסוף Google Cloud ומחפשים את כתובת ה-IP החיצונית של מכונת ה-VM של יעד מבוצר (bastion host).

    לדף VM Instances

  3. פותחים טרמינל בתחנת העבודה.
  4. מתחברים למכונת ה-VM של יעד מבוצר (bastion host) באמצעות הפקודה הבאה:

    ssh -A -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP

    מחליפים את מה שכתוב בשדות הבאים:

    • PATH_TO_PRIVATE_KEY: הנתיב לקובץ של מפתח ה-SSH הפרטי שתואם למפתח הציבורי שהוספתם למכונה הווירטואלית.
    • USERNAME: שם המשתמש. אם אתם מנהלים את מפתחות ה-SSH במטא-נתונים,שם המשתמש הוא מה שציינתם כשיצרתם את מפתח ה-SSH. אם אתם משתמשים בחשבונות של OS Login, שם המשתמש מוגדר בפרופיל שלכם ב-Google. לדוגמה, cloudysanfrancisco_example_com או cloudysanfrancisco.
    • EXTERNAL_IP: כתובת ה-IP החיצונית של המכונה הווירטואלית.
  5. מהמכונה הווירטואלית של היעד המבוצר, מתחברים דרך כתובת ה-IP הפנימית של מכונה וירטואלית באמצעות הפקודה הבאה:

    ssh USERNAME@INTERNAL_IP

    מחליפים את מה שכתוב בשדות הבאים:

    • USERNAME: שם המשתמש. אם אתם מנהלים את מפתחות ה-SSH במטא-נתונים,שם המשתמש הוא מה שציינתם כשיצרתם את מפתח ה-SSH. אם אתם משתמשים בחשבונות של OS Login, שם המשתמש מוגדר בפרופיל שלכם ב-Google. לדוגמה, cloudysanfrancisco_example_com או cloudysanfrancisco.
    • INTERNAL_IP: כתובת ה-IP הפנימית של המכונה הווירטואלית.

אפליקציית PuTTY

כדי להתחבר למכונה וירטואלית דרך יעד מבוצר (bastion host) באמצעות PuTTY, מבצעים את הפעולות הבאות:

  1. אם עדיין לא עשיתם זאת, מוסיפים מפתח SSH למכונה הווירטואלית של יעד מבוצר (bastion host).
  2. אם אפליקציית PuTTY עדיין לא מותקנת בתחנת העבודה שלכם, מורידים את קובצי החבילה של PuTTY.
  3. נכנסים לדף VM Instances במסוף Google Cloud ומחפשים את כתובת ה-IP הפנימית של המכונה הווירטואלית שאליה רוצים להתחבר.

    לדף VM Instances

  4. פותחים את אפליקציית PuTTY. חלון הגדרות החיבור ייפתח.
  5. בשדה Host Name, מזינים את שם המשתמש שמשויך למפתח ה-SSH ואת כתובת ה-IP החיצונית של המכונה הווירטואלית שאליה רוצים להתחבר. צריך להשתמש בפורמט הבא:

    USERNAME@EXTERNAL_IP

    מחליפים את מה שכתוב בשדות הבאים:

    • USERNAME: שם המשתמש. אם אתם מנהלים את מפתחות ה-SSH במטא-נתונים,שם המשתמש הוא מה שציינתם כשיצרתם את מפתח ה-SSH. אם אתם משתמשים בחשבונות של OS Login, שם המשתמש מוגדר בפרופיל שלכם ב-Google. לדוגמה, cloudysanfrancisco_example_com או cloudysanfrancisco.
    • EXTERNAL_IP: כתובת ה-IP החיצונית של המכונה הווירטואלית.
  6. בתפריט Category, עוברים אל Connection > SSH > Auth.
  7. בשדה Private key file for authentication (קובץ מפתח פרטי לאימות), בוחרים את קובץ המפתח הפרטי של SSH שתואם למפתח הציבורי שהוספתם למכונה הווירטואלית.
  8. בקטע Authentication Parameters, בוחרים באפשרות Allow agent forwarding.
  9. לוחצים על פתיחה כדי להתחבר למכונת ה-VM של יעד מבוצר (bastion host).
  10. מהמכונה הווירטואלית של היעד המבוצר, מתחברים דרך כתובת ה-IP הפנימית של מכונה וירטואלית באמצעות הפקודה הבאה:

    ssh USERNAME@INTERNAL_IP

    מחליפים את מה שכתוב בשדות הבאים:

    • USERNAME: שם המשתמש. אם אתם מנהלים את מפתחות ה-SSH במטא-נתונים,שם המשתמש הוא מה שציינתם כשיצרתם את מפתח ה-SSH. אם אתם משתמשים בחשבונות של OS Login, שם המשתמש מוגדר בפרופיל שלכם ב-Google. לדוגמה, cloudysanfrancisco_example_com או cloudysanfrancisco.
    • INTERNAL_IP: כתובת ה-IP הפנימית של המכונה הווירטואלית.

פתרון בעיות

כדי למצוא שיטות לאבחון ולפתרון של חיבורי SSH שנכשלו, ראו פתרון בעיות ב-SSH.

המאמרים הבאים