במאמר הזה מוסבר איך להגדיר אפליקציות להתחברות פרוגרמטית בין שתי מכונות וירטואליות (VM) באמצעות SSH ו-OS Login. הפעלת SSH באפליקציות יכולה להיות שימושית לאוטומציה של תהליכי ניהול מערכת.
כל דוגמאות הקוד שמופיעות במדריך הזה מתארחות בדף GoogleCloudPlatform/python-docs-samples ב-GitHub.
לפני שמתחילים
- הגדרת SSH לחשבון שירות
- הגדרת OS Login בפרויקט או במכונה וירטואלית שפועלת כחשבון שירות.
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל
הגדרת אפליקציית SSH
הגדרת האפליקציה לניהול מפתחות SSH והפעלת חיבורי SSH למכונות וירטואליות של Compute Engine. באופן כללי, האפליקציה צריכה לבצע את הפעולות הבאות:
- מייבאים את ספריית Google OS Login כדי ליצור ספריות לקוח, שמאפשרות לבצע אימות באמצעות OS Login API.
- מאותחלים את אובייקט הלקוח של OS Login כדי לאפשר לאפליקציה להשתמש ב-OS Login.
- מטמיעים את השיטה
create_ssh_key()שיוצרת מפתח SSH לחשבון השירות של המכונה הווירטואלית ומוסיפה את המפתח הציבורי לחשבון השירות. - קוראים ל-method
get_login_profile()מספריית OS Login כדי לקבל את שם המשתמש ב-POSIX שחשבון השירות משתמש בו. - מטמיעים שיטה
run_ssh()להפעלת פקודת SSH מרחוק. - מסירים את קובצי המפתח הזמניים של SSH.
אפליקציית SSH לדוגמה
אפליקציית הדוגמה oslogin_service_account_ssh.py מדגימה הטמעה אפשרית של אפליקציית SSH. בדוגמה הזו, האפליקציה משתמשת במתודה run_ssh() כדי להריץ פקודה במופע מרוחק ולהחזיר את פלט הפקודה.
הפעלת אפליקציית SSH
אחרי שיוצרים אפליקציה שמשתמשת ב-SSH, אפשר להריץ אותה באמצעות תהליך שדומה לדוגמה הבאה, שמתקינה ומריצה את אפליקציית הדוגמה oslogin_service_account_ssh.py. יכול להיות שהספריות שתתקינו יהיו שונות, בהתאם לשפת התכנות שבה האפליקציה משתמשת.
אפשר גם לכתוב אפליקציה שמייבאת את oslogin_service_account_ssh.py ומריצה אותו ישירות.
מתחברים למכונה הווירטואלית שמארחת את אפליקציית ה-SSH.
במכונה הווירטואלית, מתקינים את
pipואת ספריית הלקוח של Python 3:sudo apt update && sudo apt install python3-pip -y && pip install --upgrade google-cloud-os-login requests
אופציונלי: אם אתם משתמשים באפליקציה לדוגמה
oslogin_service_account_ssh.py, אתם יכולים להוריד אותה מ-GoogleCloudPlatform/python-docs-samples:curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/compute/oslogin/oslogin_service_account_ssh.py
מריצים את אפליקציית ה-SSH. אפליקציית הדוגמה משתמשת ב-
argparseכדי לקבל משתנים משורת הפקודה. בדוגמה הזו, נותנים לאפליקציה הוראה להתקין ולהריץ אתcowsayבמכונת VM אחרת בפרויקט.python3 service_account_ssh.py \ --cmd 'sudo apt install cowsay -y && cowsay "It works!"' \ --project=PROJECT_ID --instance=VM_NAME --zone=ZONE
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט של המכונה הווירטואלית שאליה האפליקציה מתחברת. -
VM_NAME: השם של המכונה הווירטואלית שאליה האפליקציה מתחברת. -
ZONE: האזור של המכונה הווירטואלית שאליה האפליקציה מתחברת.
הפלט אמור להיראות כך:
⋮ ___________ It works! ----------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||-
המאמרים הבאים
- מורידים את דוגמת הקוד המלאה ומעיינים בה. הדוגמה המלאה כוללת דוגמה קטנה לשימוש בכל השיטות האלה ביחד. אתם יכולים להוריד אותו, לשנות אותו ולהריץ אותו בהתאם לצרכים שלכם.
- מידע נוסף על חיבורי SSH ב-Compute Engine, כולל הגדרה ואחסון של מפתחות SSH