הגדרת OS Login כך שיידרשו אישורי SSH לחיבורי SSH

מכונות וירטואליות שתומכות באישורים של OS Login תומכות בחיבורים ממפתחות SSH ומאישורי SSH. אישורי SSH הם מפתחות SSH שנחתמו על ידי מפתח מהימן אחר, במקרה הזה רשות אישורים שמנוהלת על ידי OS Login. במסמך הזה מוסבר איך להגדיר מכונות וירטואליות עם OS Login כך שיידרשו אישורים של SSH לחיבורי SSH, ואיך לחסום חיבורים ממפתחות SSH לא חתומים.

כשמגדירים ב-OS Login שחיבורים למכונות וירטואליות ידרשו אישורי SSH, רק אישורי SSH שנחתמו על ידי רשות האישורים מורשים להתחבר למכונות וירטואליות. חיבורים ממפתחות SSH לא חתומים נדחים. תוקף האישורים של SSH הוא חמש דקות, ולאחר מכן אי אפשר יותר להשתמש בהם כדי להתחבר למכונות וירטואליות, וצריך ליצור אישור חדש.

אנחנו ממליצים להגדיר את OS Login כך שיידרשו אישורי SSH לחיבורי SSH, כדי להוסיף שכבת אבטחה נוספת מפני משתמשים זדוניים. תעודות SSH הן לטווח קצר והן תקפות רק למכונה וירטואלית ספציפית. כלומר, אם הן נפרצו, שטח הפנים של המתקפה קטן משמעותית וחלון הזמן של המתקפה קצר משמעותית בהשוואה למפתחות SSH לטווח ארוך.

אם הארגון שלכם משתמש באיחוד שירותי אימות הזהות של כוח עבודה, כדאי לעיין במאמר שימוש באיחוד שירותי אימות הזהות של כוח עבודה עם OS Login כדי ללמוד איך להפעיל אישורי SSH בארגון.

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

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

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

    המסוף

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

    gcloud

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

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

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

מגבלות

  • כדי להשתמש באישורים של SSH, במכונה הווירטואלית שאליה מתחברים צריכה להיות מותקנת גרסה 7.4 ואילך של OpenSSH.

דרישה לאישורי SSH

אתם יכולים להגדיר את OS Login כך שיידרשו אישורי SSH לכל חיבורי ה-SSH למכונות וירטואליות עם OS Login בפרויקט, או למכונות וירטואליות בודדות. אחרי שמגדירים את OS Login כך שיידרשו אישורי SSH, חיבורי SSH ממסוף Google Cloud ומ-ה-CLI של gcloud משתמשים באישורי SSH כברירת מחדל. אם אתם לא רוצים להגדיר את OS Login כך שיידרשו אישורים, אבל אתם רוצים להשתמש באישור כדי להתחבר למכונות וירטואליות, אתם צריכים להתחבר באמצעות כלים של צד שלישי, כמו שמתואר בקטע התחברות למכונה וירטואלית באמצעות אישור SSH.

דרישה של אישורי SSH לכל המכונות הווירטואליות שמופעל בהן OS Login בפרויקט

כדי לדרוש אישורי SSH לכל החיבורים לכל המכונות הווירטואליות שמשתמשות ב-OS Login בפרויקט, משתמשים במסוף Google Cloud או ב-CLI של gcloud.

המסוף

כדי לדרוש אישורי SSH לכל החיבורים למכונות וירטואליות שמופעל בהן OS Login, משתמשים במסוף Google Cloud כדי להגדיר את enable-oslogin ואת enable-oslogin-certificates לערך TRUE במטא-נתונים של הפרויקט:

  1. עוברים לדף מטא-נתונים.

    מעבר אל Metadata

  2. לוחצים על Edit.

  3. לוחצים על Add item.

    1. בשדה מפתח, מזינים enable-oslogin.
    2. בשדה ערך, מזינים TRUE.
  4. לוחצים על Add item.

    1. בשדה מפתח, מזינים enable-oslogin-certificates.
    2. בשדה ערך, מזינים TRUE.
  5. לוחצים על Save.

gcloud

כדי לדרוש אישורי SSH לכל החיבורים למכונות וירטואליות שמופעל בהן OS Login, משתמשים בפקודה gcloud compute project-info add-metadata כדי להגדיר את enable-oslogin=TRUE ואת enable-oslogin-certificates=TRUE במטא-נתונים של הפרויקט:

gcloud compute project-info add-metadata \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

דרישה של אישורי SSH במכונה וירטואלית אחת שמופעל בה OS Login

כדי לדרוש אישורים לכל חיבורי ה-SSH למכונה וירטואלית יחידה שמשתמשת ב-OS Login, צריך להשתמש במסוף Google Cloud או ב-CLI של gcloud.

המסוף

כדי לדרוש אישורי SSH לכל החיבורים למכונה וירטואלית יחידה, משתמשים במסוףGoogle Cloud כדי להגדיר את enable-oslogin ואת enable-oslogin-certificates לערך TRUE במטא-נתונים של המופע:

  1. נכנסים לדף VM instances.

    כניסה לדף VM instances

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

  3. לוחצים על Edit.

  4. בקטע מטא נתונים, לוחצים על הוספת פריט.

    1. בשדה מפתח, מזינים enable-oslogin.
    2. בשדה ערך, מזינים TRUE.
  5. לוחצים על Add item.

    1. בשדה מפתח, מזינים enable-oslogin-certificates.
    2. בשדה ערך, מזינים TRUE.
  6. לוחצים על Save.

gcloud

כדי לדרוש אישורי SSH לכל החיבורים למכונה וירטואלית אחת, משתמשים בפקודה gcloud compute instances add-metadata כדי להגדיר את enable-oslogin=TRUE ואת enable-oslogin-certificates=TRUE במטא-נתונים של המופע:

gcloud compute instances add-metadata VM_NAME \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

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

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

אחרי שמגדירים את OS Login כך שידרוש אישורי SSH, חיבורי SSH ממסוף Google Cloud ומ-CLI של gcloud משתמשים באישורי SSH כברירת מחדל. אם אתם לא רוצים להגדיר את OS Login כך שיידרשו אישורים, אבל אתם רוצים להשתמש באישורים כדי להתחבר למכונות וירטואליות, אתם צריכים להתחבר באמצעות כלים של צד שלישי.

המסוף

כדי להתחבר למכונות וירטואליות באמצעות SSH בדפדפן ממסוףGoogle Cloud , מבצעים את הפעולות הבאות:

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

    כניסה לדף VM instances

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

    הלחצן SSH ליד שם המכונה.

gcloud

משתמשים בפקודה gcloud beta compute ssh כדי להתחבר למכונה וירטואלית באמצעות אישור:

gcloud beta compute ssh VM_NAME

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

כלי צד שלישי

כדי להשתמש באישור SSH עם לקוח SSH של צד שלישי:

  1. יוצרים מפתח SSH אם עדיין אין לכם מפתח.

  2. חותמים על מפתח ה-SSH הציבורי באמצעות השיטה projects.locations.signSshPublicKey:

    POST https://oslogin.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
     "compute_instance": "COMPUTE_INSTANCE",
     "service_account": "SERVICE_ACCOUNT"
    }
    

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

    • PROJECT_ID: מזהה הפרויקט שמכיל את המכונה הווירטואלית שאליה רוצים להתחבר
    • LOCATION: האזור שבו נמצאת המכונה הווירטואלית שאליה רוצים להתחבר
    • PUBLIC_KEY: התוכן של קובץ המפתח הציבורי של SSH
    • COMPUTE_INSTANCE: מופע Compute Engine שאליו מתחברים, בפורמט projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID.
    • SERVICE_ACCOUNT: חשבון השירות שמצורף למכונה. מוחקים את השדה הזה אם למופע לא מצורף חשבון שירות.
  3. מעתיקים את אישור ה-SSH מהפלט של השיטה projects.locations.signSshPublicKey ושומרים את התוכן בקובץ חדש.

  4. מגדירים הרשאות בקובץ אישור ה-SSH באמצעות הפקודה הבאה:

    sudo chmod 600 FILE_NAME
    

    מחליפים את FILE_NAME בשם הקובץ.

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

    ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
    

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

    • PATH_TO_PRIVATE_KEY: הנתיב לקובץ של מפתח ה-SSH הפרטי.
    • PATH_TO_SSH_CERTIFICATE: הנתיב לקובץ אישור ה-SSH.
    • USERNAME: שם המשתמש שלכם ב-OS Login
    • EXTERNAL_IP: כתובת ה-IP החיצונית של המכונה הווירטואלית.

פתרון בעיות

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

מה השלב הבא?