לפני שמתחילים
- מידע על ניהול הגישה למכונות הווירטואליות של Compute Engine זמין במאמר בנושא בחירת שיטת גישה.
- אם עדיין לא עשיתם זאת, צרו זוג מפתחות SSH.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים Google Cloud ולממשקי ה-API, לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, צריך ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
Terraform
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Terraform שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
איך מוסיפים מפתחות למכונות וירטואליות שמשתמשות ב-OS Login
מכונות וירטואליות שמשתמשות ב-OS Login מקבלות מפתחות SSH שמשויכים לחשבון Google שלכם. אפשר לשייך מפתח SSH ציבורי לחשבון Google באמצעות ה-CLI של gcloud או באמצעות OS Login API. אדמינים בארגון יכולים להוסיף מפתחות SSH לחשבונות משתמשים באמצעות Directory API.
כשמוסיפים מפתחות SSH לחשבון Google, מערכת Compute Engine יוצרת שם משתמש על ידי שילוב של שם המשתמש והדומיין מכתובת האימייל שמשויכת לחשבון Google. לדוגמה, אם כתובת האימייל שלכם היא cloudysanfrancisco@gmail.com, שם המשתמש שלכם הוא cloudysanfrancisco_gmail_com.
אם מוסיפים מפתח SSH בפרויקט שלא שייך לארגון, שם המשתמש מתחיל ב-ext_, לדוגמה ext_cloudysanfrancisco_gmail_com. האדמין בארגון יכול להתאים אישית את שם המשתמש באמצעות Directory API. אם כבר הגדרתם שם משתמש, מערכת Compute Engine משתמשת בשם המשתמש הזה כשאתם מוסיפים מפתחות SSH.
כדי לראות את מפתחות ה-SSH ששמורים בפרופיל ב-OS Login, מריצים את הפקודה gcloud compute os-login describe-profile.
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
כדי להוסיף מפתח SSH ציבורי לחשבון, משתמשים בפקודה
gcloud compute os-login ssh-keys add:gcloud compute os-login ssh-keys add \ --key-file=KEY_FILE_PATH \ --project=PROJECT \ --ttl=EXPIRE_TIME
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_FILE_PATH: הנתיב למפתח ה-SSH הציבורי בתחנת העבודה. המפתח צריך להיות בפורמטpublic-openssh -
PROJECT: אופציונלי: פרויקט שבו אתם מתכוונים להשתמש במפתח ה-SSH. מציינים את השדה הזה כדי להשתמש במפתח ה-SSH בפרויקט מחוץ לארגון, או אם אתם לא חברים בארגון Cloud Identity.
EXPIRE_TIME: אופציונלי: זמן התפוגה של מפתח ה-SSHלדוגמה, אם מציינים
30m, התוקף של מפתח ה-SSH יפוג אחרי 30 דקות.הדגל הזה משתמש ביחידות הבאות:
- למשך
sשניות -
mלמשך דקות -
hלמשך שעות -
dל- ימים
- למשך
-
Terraform
כדי להוסיף מפתח SSH ציבורי לחשבון, משתמשים במשאב google_client_openid_userinfo יחד עם המשאב google_os_login_ssh_public_key.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
REST
כדי להוסיף מפתח SSH ציבורי לחשבון, משתמשים בשיטה users.importSshPublicKey של OS Login API:
POST https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL:importSshPublicKey
{
"key": "SSH_KEY",
"expirationTimeUsec": "EXPIRATION_TIMESTAMP"
}
מחליפים את מה שכתוב בשדות הבאים:
-
ACCOUNT_EMAIL: כתובת האימייל שמשויכת לחשבון שלכם -
SSH_KEY: המפתח הציבורי שרוצים להוסיף לחשבון -
EXPIRATION_TIMESTAMP: זמן התפוגה של המפתח, במיקרו-שניות מאז ראשית הזמן (1 שנייה = 106 מיקרו-שניות)
איך מוסיפים מפתחות SSH למכונות וירטואליות שמשתמשות במפתחות SSH שמבוססים על מטא-נתונים
במכונות וירטואליות שלא משתמשות ב-OS Login, מפתחות SSH נשמרים במטא-נתונים של הפרויקט והמכונה ב-Compute Engine. אם השירות OS Login מופעל במכונה הווירטואלית, סוכן האורח של המכונה הווירטואלית מתעלם מהמפתחות ששמורים במטא-נתונים.
אתם יכולים להשתמש במפתחות SSH ששמורים במטא-נתונים של הפרויקט כדי לגשת לכל המכונות הווירטואליות בפרויקט. אתם יכולים להשתמש במפתחות SSH ששמורים במטא-נתונים של המכונה כדי לגשת למכונות וירטואליות נפרדות.
Compute Engine לא מסיר באופן אוטומטי מפתחות SSH שפג תוקפם מהמטא-נתונים בזמן התפוגה, אבל אי אפשר להשתמש במפתחות שפג תוקפם כדי ליצור חיבורים חדשים למכונות וירטואליות. אם רוצים להסיר מפתחות שתוקפם פג מהמטא-נתונים, אפשר לעיין במאמר הסרת מפתחות SSH ממכונות וירטואליות שמשתמשות במפתחות שמבוססים על מטא-נתונים.
אפשר להוסיף מפתח SSH ציבורי למטא-נתונים של הפרויקט או של מכונת ה-VM באמצעות מסוף Google Cloud , ה-CLI של gcloud או REST. אי אפשר להגדיר ערכי מטא-נתונים אזוריים למפתחות SSH.
הוספת מפתחות SSH למטא-נתונים של הפרויקט
אתם יכולים להוסיף מפתח SSH ציבורי למטא-נתונים של הפרויקט כדי לקבל גישה לכל המכונות הווירטואליות בפרויקט, למעט מכונות וירטואליות שחוסמות מפתחות SSH ברמת הפרויקט. מידע נוסף על חסימת מפתחות SSH ברמת הפרויקט זמין במאמר חסימת מפתחות SSH ממכונות וירטואליות שמשתמשות במפתחות SSH שמבוססים על מטא-נתונים.
המסוף
כדי להוסיף מפתח SSH ציבורי למטא-נתונים של הפרויקט באמצעות מסוףGoogle Cloud , מבצעים את הפעולות הבאות:
נכנסים לדף Metadata במסוף Google Cloud .
לוחצים על הכרטיסייה מפתחות SSH.
לוחצים על Edit.
לוחצים על Add item.
בשדה SSH key (מפתח SSH) שנפתח, מוסיפים את המפתח הציבורי של ה-SSH. המפתח צריך להיות באחד מהפורמטים הבאים:
- הפורמט של מפתח ללא תאריך תפוגה:
KEY_VALUE USERNAME
- הפורמט של מפתח עם זמן תפוגה:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VALUE: הערך של מפתח ה-SSH הציבורי -
USERNAME: שם המשתמש שלכם. לדוגמה:cloudysanfranciscoאוcloudysanfrancisco_gmail_com.במכונות וירטואליות של Linux, אי אפשר להשתמש ב-
USERNAMEבתורroot, אלא אם מגדירים את המכונה הווירטואלית כך שתאפשר התחברות באמצעות משתמש ה-Root. מידע נוסף זמין במאמר איך מתחברים למכונות וירטואליות של Linux בתור משתמש Root.במכונות וירטואליות של Windows שמשתמשות ב-Active Directory (AD), צריך להוסיף לפני שם המשתמש את הדומיין של AD, בפורמט
DOMAIN\. לדוגמה, למשתמשcloudysanfranciscoב-ADad.example.comישUSERNAMEשלexample\cloudysanfrancisco. -
EXPIRE_TIME: השעה שבה תוקף המפתח יפוג, בפורמט ISO 8601. לדוגמה:2021-12-04T20:12:00+0000
- הפורמט של מפתח ללא תאריך תפוגה:
לוחצים על Save.
gcloud
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
אם יש מפתחות SSH קיימים במטא-נתונים של הפרויקט, צריך להוסיף אותם מחדש למטא-נתונים של הפרויקט בכל פעם שמוסיפים מפתח SSH חדש באמצעות ה-CLI של gcloud. אם לא תוסיפו מחדש את המפתחות הקיימים, הוספה של מפתח חדש תמחק את המפתחות הקיימים.
כדי להוסיף מפתח SSH ציבורי למטא-נתונים של פרויקט באמצעות ה-CLI של gcloud:
אם בפרויקט כבר יש מפתחות SSH ציבוריים ברמת הפרויקט, צריך לאחזר אותם מהמטא-נתונים ולהוסיף אותם לקובץ חדש:
מריצים את הפקודה
gcloud compute project-info describeכדי לקבל את מפתחות ה-SSH של הפרויקט:gcloud compute project-info describe \ --format="value(commonInstanceMetadata[items][ssh-keys])"
הפלט אמור להיראות כך:
username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
מעתיקים את ערך המטא-נתונים של
ssh-keys.יוצרים ופותחים קובץ טקסט חדש בתחנת העבודה.
מדביקים בקובץ את רשימת המפתחות שהעתקתם.
מוסיפים את המפתח החדש בסוף הרשימה, באחת מהפורמטים הבאים:
- הפורמט של מפתח ללא תאריך תפוגה:
USERNAME:KEY_VALUE
- הפורמט של מפתח עם זמן תפוגה:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VALUE: הערך של מפתח ה-SSH הציבורי -
USERNAME: שם המשתמש שלכם. לדוגמה,cloudysanfranciscoאוcloudysanfrancisco_gmail_com.במכונות וירטואליות של Linux, הערך של
USERNAMEלא יכול להיותroot, אלא אם מגדירים את ה-VM כך שתאפשר התחברות של משתמש Root. מידע נוסף זמין במאמר איך מתחברים למופעים כמשתמש Root.במכונות וירטואליות של Windows שמשתמשות ב-Active Directory (AD), צריך להוסיף לפני שם המשתמש את הדומיין של AD, בפורמט
DOMAIN\. לדוגמה, למשתמשcloudysanfranciscoב-ADad.example.comישUSERNAMEשלexample\cloudysanfrancisco. -
EXPIRE_TIME: הזמן שבו פג התוקף של המפתח, בפורמט ISO 8601. לדוגמה:2021-12-04T20:12:00+0000
- הפורמט של מפתח ללא תאריך תפוגה:
שומרים את הקובץ וסוגרים אותו.
מריצים את הפקודה
gcloud compute project-info add-metadataכדי להגדיר את הערךssh-keysברמת הפרויקט:gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
מחליפים את
KEY_FILEבאחד מהערכים הבאים:- הנתיב לקובץ שיצרתם בשלב הקודם, אם בפרויקט היו מפתחות SSH קיימים
- הנתיב לקובץ של מפתח ה-SSH הציבורי החדש, אם בפרויקט לא היו מפתחות SSH קיימים
Terraform
כדי להוסיף מפתח SSH ציבורי למטא-נתונים של הפרויקט, משתמשים במשאב google_compute_project_metadata.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
REST
אם יש מפתחות SSH קיימים במטא-נתוני הפרויקט, צריך להוסיף אותם מחדש למטא-נתוני הפרויקט בכל פעם שמוסיפים מפתח SSH חדש באמצעות Compute Engine API. אם לא תוסיפו מחדש את המפתחות הקיימים, הוספה של מפתח חדש תמחק את המפתחות הקיימים.
כדי להוסיף מפתח SSH ציבורי למטא-נתונים של הפרויקט באמצעות Compute Engine API, מבצעים את הפעולות הבאות:
מקבלים את הערכים של
fingerprintו-ssh-keysמהמטא-נתונים באמצעות השיטהprojects.get.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
מחליפים את
PROJECT_IDבמזהה הפרויקט.התגובה אמורה להיראות כך:
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...מוסיפים את הערך החדש
ssh-keysבאמצעות השיטהprojects.setCommonInstanceMetadata.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY" } ] "fingerprint": "FINGERPRINT" }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
EXISTING_SSH_KEYS: הערך של מפתחssh-keysמהתגובה לבקשתprojects.get -
FINGERPRINT: הערך שלfingerprintמהתגובה לבקשהprojects.get
NEW_SSH_KEY: מפתח ה-SSH החדש, באחד מהפורמטים הבאים:- הפורמט של מפתח ללא תאריך תפוגה:
USERNAME:KEY_VALUE
- הפורמט של מפתח עם זמן תפוגה:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VALUE: הערך של מפתח ה-SSH הציבורי -
USERNAME: שם המשתמש שלכם. לדוגמה,cloudysanfranciscoאוcloudysanfrancisco_gmail_com.במכונות וירטואליות של Linux, אי אפשר להשתמש ב-
USERNAMEבתורroot, אלא אם מגדירים את המכונה הווירטואלית כך שתאפשר התחברות באמצעות משתמש ה-Root. מידע נוסף זמין במאמר התחברות למכונות כמשתמש Root.במכונות וירטואליות של Windows שמשתמשות ב-Active Directory (AD), צריך להוסיף לפני שם המשתמש את הדומיין של AD, בפורמט
DOMAIN\. לדוגמה, למשתמשcloudysanfranciscoב-ADad.example.comישUSERNAMEשלexample\cloudysanfrancisco. -
EXPIRE_TIME: השעה שבה התוקף של המפתח יפוג, בפורמט ISO 8601. לדוגמה:2021-12-04T20:12:00+0000
- הפורמט של מפתח ללא תאריך תפוגה:
-
הוספת מפתחות SSH למטא-נתונים של מכונה
אתם יכולים להוסיף מפתח SSH ציבורי למטא-נתונים של המכונה כשיוצרים מכונה וירטואלית או אחרי שיוצרים מכונה וירטואלית.
הוספת מפתחות SSH למטא-נתונים של מופע במהלך יצירת מכונה וירטואלית
אפשר להוסיף מפתחות SSH למטא-נתונים של המכונה במהלך יצירת ה-VM, באמצעות מסוףGoogle Cloud , ה-CLI של gcloud או Compute Engine API.
המסוף
כדי ליצור מכונה ולהוסיף מפתח SSH ציבורי למטא-נתונים של המכונה בו-זמנית באמצעות מסוף Google Cloud :
נכנסים לדף Create an instance במסוף Google Cloud .
כדי להוסיף מפתח SSH ציבורי למטא-נתונים של מכונה:
בתפריט הניווט, לוחצים על אבטחה.
מרחיבים את הקטע Manage access.
כדי להשבית את OS Login, מבטלים את הסימון בתיבה Control VM access through IAM permissions.
אם רוצים לאפשר למפתחות SSH ציבוריים במטא-נתונים של הפרויקט לגשת למופע, מבטלים את הסימון בתיבת הסימון חסימת מפתחות SSH ברמת הפרויקט.
בקטע Add manually generated SSH keys (הוספת מפתחות SSH שנוצרו באופן ידני), לוחצים על Add item (הוספת פריט).
מוסיפים את המפתח הציבורי בשדה הטקסט. המפתח צריך להיות באחד מהפורמטים הבאים:
- הפורמט של מפתח ללא תאריך תפוגה:
KEY_VALUE USERNAME
- הפורמט של מפתח עם זמן תפוגה:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VALUE: הערך של מפתח ה-SSH הציבורי -
USERNAME: שם המשתמש שלכם. לדוגמה:cloudysanfranciscoאוcloudysanfrancisco_gmail_com.במכונות וירטואליות של Linux, אי אפשר להשתמש ב-
USERNAMEבתורroot, אלא אם מגדירים את המכונה הווירטואלית כך שתאפשר התחברות באמצעות משתמש ה-Root. מידע נוסף זמין במאמר התחברות למכונות וירטואליות של Linux בתור משתמש Root.במכונות וירטואליות של Windows שמשתמשות ב-Active Directory (AD), צריך להוסיף לשם המשתמש את הדומיין של AD, בפורמט
DOMAIN\. לדוגמה, למשתמשcloudysanfranciscoב-ADad.example.comישUSERNAMEשלexample\cloudysanfrancisco. -
EXPIRE_TIME: השעה שבה התוקף של המפתח יפוג, בפורמט ISO 8601. לדוגמה:2021-12-04T20:12:00+0000
- הפורמט של מפתח ללא תאריך תפוגה:
אופציונלי: מציינים אפשרויות הגדרה אחרות. למידע נוסף, ראו אפשרויות הגדרה במהלך יצירת מכונה.
כדי ליצור את המכונה ולהפעיל אותה, לוחצים על Create.
gcloud
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
כדי ליצור מכונה וירטואלית ולהוסיף מפתח SSH ציבורי למטא-נתונים של המכונה בו-זמנית באמצעות ה-CLI של gcloud, משתמשים בפקודה
gcloud compute instances create:gcloud compute instances create VM_NAME \ --metadata=ssh-keys=PUBLIC_KEY
מחליפים את מה שכתוב בשדות הבאים:
-
VM_NAME: השם של המכונה הווירטואלית החדשה
PUBLIC_KEY: מפתח ה-SSH הציבורי, באחד מהפורמטים הבאים:- הפורמט של מפתח ללא תאריך תפוגה:
USERNAME:KEY_VALUE
- הפורמט של מפתח עם זמן תפוגה:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VALUE: הערך של מפתח ה-SSH הציבורי -
USERNAME: שם המשתמש שלכם. לדוגמה,cloudysanfranciscoאוcloudysanfrancisco_gmail_com.במכונות וירטואליות של Linux, הערך של
USERNAMEלא יכול להיותroot, אלא אם מגדירים את ה-VM כך שתאפשר התחברות של משתמש Root. מידע נוסף זמין במאמר איך מתחברים למופעים כמשתמש Root.במכונות וירטואליות של Windows שמשתמשות ב-Active Directory (AD), צריך להוסיף לפני שם המשתמש את הדומיין של AD, בפורמט
DOMAIN\. לדוגמה, למשתמשcloudysanfranciscoב-ADad.example.comישUSERNAMEשלexample\cloudysanfrancisco. -
EXPIRE_TIME: השעה שבה התוקף של המפתח יפוג, בפורמט ISO 8601. לדוגמה:2021-12-04T20:12:00+0000
- הפורמט של מפתח ללא תאריך תפוגה:
אפשר להוסיף כמה מפתחות SSH באמצעות הדגל
--metadata-from-file=ssh-keys=FILE_PATH. בקובץ, מוסיפים רשימה של שמות משתמשים ומפתחות SSH ציבוריים באחד מהפורמטים שצוינו למעלה.-
Terraform
כדי להוסיף מפתח SSH ציבורי למטא-נתונים של המופע, משתמשים במשאב google_compute_instance.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
REST
כדי ליצור מכונה וירטואלית ולהוסיף מפתח SSH ציבורי למטא-נתונים של המכונה בו-זמנית באמצעות Compute Engine, צריך ליצור בקשת POST ל-method instances.insert:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
ZONE: האזור של המכונה הווירטואלית
בגוף הבקשה, מציינים את שמות המשתמשים ואת מפתחות ה-SSH הציבוריים במאפיין items:
...
{
"items": [
{
"key": "ssh-keys",
"value": "PUBLIC_KEY"
}
]
}
...
מחליפים את PUBLIC_KEY במפתח הציבורי שלכם, באחד מהפורמטים הבאים:
- הפורמט של מפתח ללא תאריך תפוגה:
USERNAME:KEY_VALUE
- הפורמט של מפתח עם זמן תפוגה:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VALUE: הערך של מפתח ה-SSH הציבורי -
USERNAME: שם המשתמש שלכם. לדוגמה,cloudysanfranciscoאוcloudysanfrancisco_gmail_com.במכונות וירטואליות של Linux, הערך של
USERNAMEלא יכול להיותroot, אלא אם מגדירים את ה-VM כך שתאפשר התחברות של משתמש Root. מידע נוסף זמין במאמר איך מתחברים למופעים כמשתמש Root.במכונות וירטואליות של Windows שמשתמשות ב-Active Directory (AD), צריך להוסיף לשם המשתמש את הדומיין של AD, בפורמט
DOMAIN\. לדוגמה, למשתמשcloudysanfranciscoב-ADad.example.comישUSERNAMEשלexample\cloudysanfrancisco. -
EXPIRE_TIME: הזמן שבו פג תוקף המפתח, בפורמט ISO 8601. לדוגמה:2021-12-04T20:12:00+0000
אפשר להוסיף כמה מפתחות SSH על ידי הוספת \n בין המפתחות.
הוספת מפתחות SSH למטא-נתונים של מופע אחרי יצירת המכונה הווירטואלית
אפשר להוסיף מפתחות SSH למטא-נתונים של מופע אחרי יצירת מכונה וירטואלית, באמצעות מסוףGoogle Cloud , ה-CLI של gcloud או Compute Engine API.
המסוף
כדי להוסיף מפתח SSH ציבורי למטא-נתונים של מכונה באמצעות מסוףGoogle Cloud , מבצעים את הפעולות הבאות:
נכנסים לדף VM instances במסוף Google Cloud .
לוחצים על שם המכונה הווירטואלית שרוצים להוסיף לה מפתח SSH.
לוחצים על Edit.
בקטע מפתחות SSH, לוחצים על Add item.
מוסיפים את המפתח הציבורי בשדה הטקסט. המפתח צריך להיות באחד מהפורמטים הבאים:
- פורמט למפתח ללא תאריך תפוגה:
KEY_VALUE USERNAME
- הפורמט של מפתח עם זמן תפוגה:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VALUE: הערך של מפתח ה-SSH הציבורי -
USERNAME: שם המשתמש שלכם. לדוגמה:cloudysanfranciscoאוcloudysanfrancisco_gmail_com.במכונות וירטואליות של Linux, אי אפשר להשתמש ב-
USERNAMEבתורroot, אלא אם מגדירים את המכונה הווירטואלית כך שתאפשר התחברות באמצעות משתמש ה-Root. מידע נוסף זמין במאמר איך מתחברים למכונות וירטואליות של Linux בתור משתמש Root.במכונות וירטואליות של Windows שמשתמשות ב-Active Directory (AD), צריך להוסיף לשם המשתמש את הדומיין של AD, בפורמט
DOMAIN\. לדוגמה, למשתמשcloudysanfranciscoב-ADad.example.comישUSERNAMEשלexample\cloudysanfrancisco. -
EXPIRE_TIME: השעה שבה תוקף המפתח יפוג, בפורמט ISO 8601. לדוגמה:2021-12-04T20:12:00+0000
- פורמט למפתח ללא תאריך תפוגה:
לוחצים על Save.
gcloud
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
אם יש מפתחות SSH קיימים במטא-נתונים של המכונה, צריך להוסיף אותם מחדש למטא-נתונים של המכונה בכל פעם שמוסיפים מפתח SSH חדש באמצעות ה-CLI של gcloud. אם לא תוסיפו מחדש את המפתחות הקיימים, הוספה של מפתח חדש תמחק את המפתחות הקיימים.
כדי להוסיף מפתח SSH ציבורי למטא-נתונים של מופע באמצעות ה-CLI של gcloud, מבצעים את הפעולות הבאות:
אם למכונה הווירטואלית כבר יש מפתחות SSH ציבוריים ברמת המופע, צריך לאחזר אותם מהמטא-נתונים ולהוסיף אותם לקובץ חדש:
מריצים את הפקודה
gcloud compute instances describeכדי לקבל את המטא-נתונים של המכונה הווירטואלית:gcloud compute instances describe VM_NAME
מחליפים את VM_NAME בשם המכונה הווירטואלית שרוצים להוסיף או להסיר ממנה מפתחות SSH ציבוריים.
הפלט אמור להיראות כך:
... metadata: ...
- key: ssh-keysvalue: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...מעתיקים את ערך המטא-נתונים של
ssh-keys.יוצרים ופותחים קובץ טקסט חדש בתחנת העבודה.
מדביקים בקובץ את רשימת המפתחות שהעתקתם.
מוסיפים את המפתח החדש בסוף הרשימה, באחת מהפורמטים הבאים:
- הפורמט של מפתח ללא תאריך תפוגה:
USERNAME:KEY_VALUE
- הפורמט של מפתח עם זמן תפוגה:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VALUE: הערך של מפתח ה-SSH הציבורי -
USERNAME: שם המשתמש שלכם. לדוגמה,cloudysanfranciscoאוcloudysanfrancisco_gmail_com.במכונות וירטואליות של Linux, אי אפשר להשתמש ב-
USERNAMEבתורroot, אלא אם מגדירים את המכונה הווירטואלית כך שתאפשר התחברות באמצעות משתמש ה-Root. מידע נוסף זמין במאמר איך מתחברים למופעים כמשתמש Root.במכונות וירטואליות של Windows שמשתמשות ב-Active Directory (AD), צריך להוסיף לפני שם המשתמש את הדומיין של AD, בפורמט
DOMAIN\. לדוגמה, למשתמשcloudysanfranciscoב-ADad.example.comישUSERNAMEשלexample\cloudysanfrancisco. -
EXPIRE_TIME: השעה שבה תוקף המפתח יפוג, בפורמט ISO 8601. לדוגמה:2021-12-04T20:12:00+0000
- שומרים את הקובץ וסוגרים אותו.
מריצים את הפקודה
gcloud compute instances add-metadataכדי להגדיר את הערךssh-keys:gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
מחליפים את מה שכתוב בשדות הבאים:
-
VM_NAME: המכונה הווירטואלית שרוצים להוסיף לה את מפתח ה-SSH -
KEY_FILEעם אחת מהאפשרויות הבאות: - הנתיב לקובץ שיצרתם בשלב הקודם, אם למכונה הווירטואלית היו מפתחות SSH קיימים
- הנתיב לקובץ של מפתח ה-SSH הציבורי החדש, אם למכונה הווירטואלית לא היו מפתחות SSH קיימים
-
REST
אם יש מפתחות SSH קיימים במטא-נתונים של המופע, צריך להוסיף אותם מחדש למטא-נתונים של המופע בכל פעם שמוסיפים מפתח SSH חדש באמצעות Compute Engine API. אם לא תוסיפו מחדש את המפתחות הקיימים, הוספה של מפתח חדש תמחק את המפתחות הקיימים.
כדי להוסיף מפתח SSH ציבורי למטא-נתונים של מופע באמצעות Compute Engine API:
מקבלים את הערכים של
fingerprintו-ssh-keysמהמטא-נתונים באמצעות השיטהinstances.get.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
ZONE: האזור של המכונה הווירטואלית שאליה רוצים להוסיף מפתח SSH -
VM_NAME: המכונה הווירטואלית שאליה מוסיפים מפתח SSH
התגובה אמורה להיראות כך:
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF...\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...-
מוסיפים את הערך החדש
ssh-keysבאמצעות השיטהinstances.setMetadata.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY" } ] "fingerprint": "FINGERPRINT" }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט -
EXISTING_SSH_KEYS: הערך של המפתחssh-keysמהתגובה לבקשהinstances.get -
FINGERPRINT: הערך שלfingerprintמהתגובה לבקשתprojects.get
NEW_SSH_KEY: מפתח ה-SSH החדש, באחד מהפורמטים הבאים:- הפורמט של מפתח ללא תאריך תפוגה:
USERNAME:KEY_VALUE
- הפורמט של מפתח עם זמן תפוגה:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VALUE: הערך של מפתח ה-SSH הציבורי -
USERNAME: שם המשתמש שלכם. לדוגמה,cloudysanfranciscoאוcloudysanfrancisco_gmail_com.במכונות וירטואליות של Linux, אי אפשר להשתמש ב-
USERNAMEבתורroot, אלא אם מגדירים את המכונה הווירטואלית כך שתאפשר התחברות באמצעות משתמש ה-Root. מידע נוסף זמין במאמר התחברות למכונות כמשתמש Root.במכונות וירטואליות של Windows שמשתמשות ב-Active Directory (AD), צריך להוסיף לפני שם המשתמש את הדומיין של AD, בפורמט
DOMAIN\. לדוגמה, למשתמשcloudysanfranciscoב-ADad.example.comישUSERNAMEשלexample\cloudysanfrancisco. -
EXPIRE_TIME: השעה שבה תוקף המפתח יפוג, בפורמט ISO 8601. לדוגמה:2021-12-04T20:12:00+0000
- הפורמט של מפתח ללא תאריך תפוגה:
-
מה השלב הבא?
- איך מתחברים למכונות וירטואליות
- איך מנהלים את הגישה למכונות וירטואליות
- איך מעבירים קבצים למכונות וירטואליות
- הסבר על חיבורי SSH למכונות וירטואליות של Linux ב-Compute Engine.