התחברות למכונות וירטואליות של Linux באמצעות שרת proxy לאימות זהויות (IAP)

במסמך הזה מתואר איך להתחבר למופע של מכונה וירטואלית (VM) באמצעות כתובת ה-IP הפנימית שלו, באמצעות העברת TCP של שרת Proxy לאימות זהויות (IAP).

התכונה 'העברת TCP ב-IAP' מאפשרת ליצור תעלה מוצפנת שדרכה אפשר להעביר חיבורי SSH למכונות וירטואליות. כשמתחברים למכונה וירטואלית שמשתמשת ב-IAP, ‏ IAP עוטף את חיבור ה-SSH ב-HTTPS לפני שהוא מעביר את החיבור למכונה הווירטואלית. לאחר מכן, IAP בודק אם יש לכם את הרשאות ה-IAM הנדרשות, ואם כן, הוא מעניק לכם גישה למכונה הווירטואלית.

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

לפני שמתחילים

  • יוצרים כלל חומת אש כדי לאפשר חיבורים מ-IAP.
  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

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

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud

    gcloud

    1. התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init
  • הגדרת אזור ותחום כברירת מחדל

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

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

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

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

המסוף

כדי להשתמש ב-SSH בדפדפן כדי ליצור מנהור לחיבורי SSH דרך כתובת IP פנימית של מכונה וירטואלית, מבצעים את הפעולות הבאות:

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

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

gcloud

מנהרים חיבורי SSH דרך כתובת IP פנימית של מכונה וירטואלית באמצעות הפקודה gcloud compute ssh עם הדגל --tunnel-through-iap:

    במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  1. מתחברים למכונה הווירטואלית באמצעות הפקודה הבאה:

    gcloud compute ssh VM-NAME \
        --tunnel-through-iap
  2. מחליפים את VM_NAME בשם המכונה הווירטואלית שאליה רוצים להתחבר.

IAP Desktop

כדי להתחבר למכונה וירטואלית באמצעות IAP Desktop:

  1. מתקינים את IAP Desktop בתחנת העבודה, אם עדיין לא עשיתם זאת.

  2. פותחים את IAP Desktop. נפתח החלון הוספת פרויקטים.

  3. כשמופיעה בקשה, נכנסים באמצעות חשבון Google שיש לו גישה לפרויקט עם המכונות הווירטואליות שרוצים להתחבר אליהן.

  4. בחלון Add projects, מזינים את מזהה הפרויקט או את שם הפרויקט שמכיל את המכונות הווירטואליות שאליהן רוצים להתחבר.

  5. בחלון Project Explorer, לוחצים לחיצה ימנית על שם המכונה הווירטואלית שוב ובוחרים באפשרות Connect כדי להתחבר למכונה הווירטואלית.

לקוחות OpenSSH

מתחברים למכונה וירטואלית שאין לה כתובת IP חיצונית באמצעות SSH דרך מנהרת IAP. אתם יכולים לכתוב קובץ תצורה משלכם של SSH ‏ (~/.ssh/config) כדי שכלים כמו VS Code או לקוח OpenSSH יוכלו להתחבר בצורה חלקה.

  1. כדי ליצור ולהפיץ את מפתחות ה-SSH, מתחברים למכונה הווירטואלית לפחות פעם אחת על ידי הפעלת הפקודה gcloud compute ssh:

    gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME --tunnel-through-iap

    מוודאים שהחיבור הצליח ויוצאים.

  2. פותחים או יוצרים את קובץ התצורה של SSH בתחנת העבודה המקומית. הקובץ הזה נמצא בדרך כלל בכתובת ~/.ssh/config ב-Linux וב-macOS, או בכתובת %USERPROFILE%\.ssh\config ב-Windows.

  3. מוסיפים את הבלוק הבא לקובץ התצורה של SSH כדי לצרף רשומה של הגדרות ל-VM:

    Host VM_NAME
        HostName VM_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

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

    • VM_NAME: השם של המכונה הווירטואלית שאליה רוצים להתחבר.
    • PATH_TO_PRIVATE_KEY: הנתיב לקובץ המפתח הפרטי, בדרך כלל ~/.ssh/google_compute_engine.
    • PROJECT_ID: מזהה הפרויקט שמכיל את המכונה הווירטואלית.
    • ZONE: האזור שבו נמצאת המכונה הווירטואלית.
    • USERNAME: שם המשתמש במכונה הווירטואלית (לדוגמה, שם המשתמש שלכם ב-OS Login ב-Google Cloud או שם המשתמש במטא-נתונים).
  4. מתחברים למכונה הווירטואלית מהטרמינל המקומי או מלקוח SSH על ידי הרצת הפקודה הבאה:

    ssh VM_NAME

אפליקציית PuTTY

כדי ליצור מנהור לחיבורי SSH דרך כתובת IP פנימית של מכונה וירטואלית באמצעות PuTTY, מבצעים את הפעולות הבאות:

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

    כניסה לדף VM Instances

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

    USERNAME@VM_NAME

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

    • USERNAME:
    • NAME: שם ה-VM.
  6. בתפריט Category, עוברים אל Connection > SSH > Auth.
  7. בשדה Private key file for authentication (קובץ מפתח פרטי לאימות), בוחרים את קובץ המפתח הפרטי של SSH שתואם למפתח הציבורי שהוספתם למכונה הווירטואלית.
  8. בתפריט Category (קטגוריה), עוברים אל Connection > Proxy (חיבור > שרת Proxy).
  9. בקטע Proxy type, בוחרים באפשרות Local.
  10. בשדה Telnet command, or local proxy command (פקודת Telnet או פקודת פרוקסי מקומי), מזינים את הפקודה הבאה:

    gcloud.cmd compute start-iap-tunnel VM_NAME PORT_NUMBER --listen-on-stdin --project=PROJECT_ID --zone=ZONE

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

    • VM_NAME: השם של המכונה הווירטואלית שאליה רוצים להתחבר.
    • PORT_NUMBER: היציאה שבה פועל דימון ה-sshd. ערך ברירת המחדל PORT_NUMBER הוא 22.
    • PROJECT_ID: הפרויקט שמארח את המכונה הווירטואלית שאליה רוצים להתחבר.
    • ZONE: האזור שבו נמצאת המכונה הווירטואלית.
  11. לוחצים על פתיחה כדי להתחבר ל-VM.

פתרון בעיות

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

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