בדף הזה מוסבר איך להפעיל גישה אינטראקטיבית לקונסולה הטורית של מכונה כדי לנפות באגים בבעיות אתחול ורישות, לפתור בעיות במכונות שלא פועלות, ליצור אינטראקציה עם GRand Unified Bootloader (GRUB) ולבצע משימות אחרות לפתרון בעיות.
למכונת Compute Engine יש ארבע יציאות טוריות וירטואליות. האינטראקציה עם יציאה טורית דומה לשימוש בחלון הטרמינל, בכך שהקלט והפלט הם במצב טקסט בלבד ואין ממשק גרפי או תמיכה בעכבר. מערכת ההפעלה, ה-BIOS וישויות אחרות ברמת המערכת של המופע כותבות לעיתים קרובות פלט ליציאות הטוריות, ויכולות לקבל קלט כמו פקודות או תשובות להנחיות. בדרך כלל, הישויות האלה ברמת המערכת משתמשות ביציאה הטורית הראשונה (יציאה 1), ולעיתים קרובות היציאה הטורית הראשונה נקראת "הקונסולה הטורית".
אם אתם רק צריכים לראות את הפלט של היציאה הטורית בלי להנפיק פקודות לקונסולה הטורית, אתם יכולים להפעיל את ה-method getSerialPortOutput או להשתמש ב-Cloud Logging כדי לקרוא את המידע שהמכונה כתבה ליציאה הטורית שלה. מידע נוסף זמין במאמר הצגת יומנים של יציאה טורית.
עם זאת, אם נתקלתם בבעיות בגישה למכונה באמצעות SSH, או אם אתם צריכים לפתור בעיות במכונה שלא הופעלה באופן מלא, אתם יכולים להפעיל גישה אינטראקטיבית לקונסולה הטורית, שמאפשרת לכם להתחבר לכל אחת מהיציאות הטוריות של המכונה ולקיים איתה אינטראקציה. לדוגמה, אפשר להריץ פקודות ישירות ולהגיב להנחיות ביציאה הטורית.
כשמפעילים או משביתים את היציאה הטורית, אפשר להשתמש בכל ערך בוליאני שהשרת של המטא-נתונים מקבל. מידע נוסף זמין במאמר בנושא ערכים בוליאניים.
לפני שמתחילים
-
אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות.
אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
המסוף
כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.
gcloud
-
התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
- הגדרת אזור ותחום כברירת מחדל
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
הפעלת גישה אינטראקטיבית בקונסולה הטורית
מפעילים גישה אינטראקטיבית לקונסולה הטורית למכונות וירטואליות ספציפיות או לכל הפרויקט.
הפעלת הגישה לפרויקט
הפעלה של גישה אינטראקטיבית לקונסולה הטורית בפרויקט מאפשרת גישה לכל מכונות ה-Compute ששייכות לפרויקט הזה.
כברירת מחדל, הגישה האינטראקטיבית ליציאה טורית מושבתת. אפשר גם להשבית אותו באופן מפורש על ידי הגדרת המפתח serial-port-enable לערך FALSE. בכל מקרה, כל הגדרה לכל מופע מבטלת את ההגדרה ברמת הפרויקט או את הגדרת ברירת המחדל.
המסוף
- נכנסים לדף Metadata במסוף Google Cloud .
- לוחצים על עריכה כדי לערוך את רשומות המטא-נתונים.
- מוסיפים רשומה חדשה שמשתמשת במפתח serial-port-enable ובערך TRUE.
- שומרים את השינויים.
gcloud
ב-Google Cloud CLI, מזינים את הפקודה project-info add-metadata באופן הבא:
gcloud compute project-info add-metadata \
--metadata serial-port-enable=TRUEREST
ב-API, שולחים בקשה לשיטה projects().setCommonInstanceMetadata ומציינים את המפתח serial-port-enable עם הערך TRUE:
{
"fingerprint": "FikclA7UBC0=",
"items": [
{
"key": "serial-port-enable",
"value": "TRUE"
}
]
}הפעלת גישה למכונת חישוב
מפעילים גישה אינטראקטיבית לקונסולה הטורית של מכונה ספציפית. הגדרה לכל מופע, אם היא קיימת, מבטלת כל הגדרה ברמת הפרויקט. אפשר גם להשבית את הגישה למכונה ספציפית, גם אם הגישה מופעלת ברמת הפרויקט, על ידי הגדרת serial-port-enable ל-FALSE במקום ל-TRUE. באופן דומה, אתם יכולים להפעיל גישה למכונה וירטואלית אחת או יותר גם אם היא מושבתת בפרויקט, באופן מפורש או כברירת מחדל.
המסוף
- נכנסים לדף VM instances במסוף Google Cloud .
- לוחצים על המופע שרוצים להפעיל עבורו את הגישה.
- לוחצים על Edit.
- בקטע Remote access, מסמנים את התיבה Enable connecting to יציאות טוריות.
- שומרים את השינויים.
gcloud
ב-Google Cloud CLI, מזינים את הפקודה instances add-metadata ומחליפים את instance-name בשם של המכונה.
gcloud compute instances add-metadata instance-name \
--metadata serial-port-enable=TRUEREST
ב-API, שולחים בקשה למתודה instances().setMetadata עם המפתח serial-port-enable והערך TRUE:
POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/example-instance/setMetadata
{
"fingerprint": "zhma6O1w2l8=",
"items": [
{
"key": "serial-port-enable",
"value": "TRUE"
}
]
}
הגדרת קונסולה טורית למכונת Bare Metal
במכונות Bare Metal, מגדילים את קצב העברת הנתונים (קצב באוד) של הקונסולה הטורית ל-115,200bps (בערך 11.5kB/sec). שימוש במהירות נמוכה יותר עלול לגרום לפלט לא ברור או חסר במסוף.
ההגדרה של תוכנת האתחול משתנה בין מערכות הפעלה וגרסאות של מערכות הפעלה. הוראות מפורטות מופיעות במאמרי העזרה של מפיץ מערכת ההפעלה.
אם משנים את קצב העברת הנתונים בשורת הפקודה בסשן הנוכחי, משתמשים בפקודה שדומה לפקודה הבאה:
console=ttyS0,115200
אם משנים את ההגדרה של GRUB, משתמשים בפקודה שדומה לפקודה הבאה:
serial --speed=115200
חשוב לוודא שאתם מעדכנים את ההגדרות של תוכנת האתחול בפועל. אפשר לעשות את זה באמצעות update-grub, grub2-mkconfig או פקודה דומה.
התחברות לקונסולה טורית
Compute Engine מציע שערים אזוריים של קונסולה טורית לכל Google Cloud אזור. אחרי שמפעילים את הגישה האינטראקטיבית לקונסולה הטורית של מכונת Compute, אפשר להתחבר לקונסולה טורית אזורית.
הקונסולה הטורית מאמתת משתמשים באמצעות מפתחות SSH. באופן ספציפי, אתם צריכים להוסיף את מפתח ה-SSH הציבורי למטא-נתונים של הפרויקט או המכונה, ולשמור את המפתח הפרטי במחשב המקומי שממנו אתם רוצים להתחבר. ה-CLI של gcloud ומסוף Google Cloud מוסיפים לפרויקט באופן אוטומטי את מפתחות ה-SSH. אם אתם משתמשים בלקוח של צד שלישי, יכול להיות שתצטרכו להוסיף מפתחות SSH באופן ידני.
אם אתם משתמשים בלקוח של צד שלישי, אתם יכולים גם לאמת את החיבור באמצעות מפתחות המארח של הקונסולה הטורית. כשמשתמשים ב-Google Cloud CLI כדי להתחבר, האימות של מפתח המארח מתבצע באופן אוטומטי בשבילכם.
המסוף
כדי להתחבר לקונסולה הטורית האזורית של מופע Compute:
- נכנסים לדף VM instances במסוף Google Cloud .
- לוחצים על המכונה שאליה רוצים להתחבר.
- בקטע פרטים, לוחצים על חיבור למסוף סדרתי כדי להתחבר ליציאה שמוגדרת כברירת מחדל (יציאה 1).
- אם רוצים להתחבר ליציאה טורית אחרת, לוחצים על החץ למטה לצד הלחצן Connect to serial console ומשנים את מספר היציאה בהתאם.
- במקרים של מכונות וירטואליות של Windows, פותחים את התפריט הנפתח שליד הכפתור ומתחברים אל Port 2 כדי לגשת לקונסולה הטורית.
gcloud
כדי להתחבר לקונסולה הטורית האזורית של מכונת Compute, משתמשים בפקודה gcloud compute connect-to-serial-port:
gcloud compute connect-to-serial-port INSTANCE_NAME \
--port=PORT_NUMBER
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: השם של מופע Compute שאליו רוצים להתחבר דרך הקונסולה הטורית. PORT_NUMBER: מספר היציאה שאליה רוצים להתחבר. במקרים של מופעי Linux, משתמשים ב-1, ובמקרים של מופעי Windows, משתמשים ב-2. מידע נוסף על מספרי יציאות זמין במאמר הסבר על מספור של יציאות טוריות.
לקוחות SSH אחרים
אתם יכולים להתחבר לקונסולה הטורית של מכונה באמצעות לקוחות SSH אחרים של צד שלישי, כל עוד הלקוח מאפשר לכם להתחבר ליציאת TCP 9600. לפני שמתחברים, אפשר לאמת את החיבור באמצעות מפתחות המארח של הקונסולה הטורית.
כדי להתחבר לקונסולה הטורית האזורית של מכונת חישוב, מריצים אחת מהפקודות הבאות, בהתאם למערכת ההפעלה של המכונה:
כדי להתחבר למופע של Linux:
ssh -i PRIVATE_SSH_KEY_FILE -p 9600 PROJECT_ID.ZONE.INSTANCE_NAME.USERNAME.OPTIONS@REGION-ssh-serialport.googleapis.com
כדי להתחבר למופע של Windows:
ssh -i PRIVATE_SSH_KEY_FILE -p 9600 PROJECT_ID.ZONE.INSTANCE_NAME.USERNAME.OPTIONS.port=2@REGION-ssh-serialport.googleapis.com
מחליפים את מה שכתוב בשדות הבאים:
-
PRIVATE_SSH_KEY_FILE: מפתח ה-SSH הפרטי של מופע Compute. -
PROJECT_ID: מזהה הפרויקט של מופע Compute הזה. -
ZONE: האזור של מופע ה-Compute. -
REGION: האזור של מכונת החישוב. -
INSTANCE_NAME: השם של מכונת ה-Compute. -
USERNAME: שם המשתמש שבו אתם משתמשים כדי להתחבר למופע. בדרך כלל זה שם המשתמש במחשב המקומי. -
OPTIONS: אפשרויות נוספות שאפשר לציין לחיבור הזה. לדוגמה, אפשר לציין יציאה טורית מסוימת ואפשרות מתקדמת כלשהי. מספר היציאה יכול להיות בין 1 ל-4, כולל. מידע נוסף על ניוד מספרים זמין במאמר הסבר על מספור יציאות טוריות. אם לא מציינים יציאה טורית, מתחברים ליציאה טורית 1.
אם נתקלתם בבעיה בהתחברות באמצעות לקוח SSH של צד שלישי, אתם יכולים להריץ את הפקודה gcloud compute connect-to-serial-port עם האפשרות --dry-run של שורת הפקודה כדי לראות את פקודת ה-SSH שהייתה אמורה לפעול בשמכם. אחר כך תוכלו להשוות את האפשרויות עם הפקודה שבה אתם משתמשים.
אימות חיבורים של לקוחות SSH מצד שלישי
כשמשתמשים בלקוח SSH של צד שלישי שאינו Google Cloud CLI, מומלץ לוודא שאתם מוגנים מפני התחזות או מתקפות מסוג 'אדם באמצע' על ידי בדיקת מפתח המארח של Google ב-SSH של היציאה הטורית. כדי להגדיר את המערכת לבדיקת מפתח המארח של SSH, מבצעים את השלבים הבאים:
מורידים את מפתח המארח של SSH עבור הקונסולה הטורית שבה אתם משתמשים:
לחיבורים אזוריים, מפתח המארח של SSH לאזור מסוים נמצא בכתובת
https://www.gstatic.com/vm_serial_port_public_keys/REGION/REGION.pubלחיבורים גלובליים, מורידים את מפתח המארח של Google ליציאה טורית של SSH
פותחים את קובץ המארחים המוכרים, שבדרך כלל נמצא ב-
~/.ssh/known_hosts.מוסיפים את התוכן של מפתח המארח של ה-SSH, עם שם המארח של השרת שנוסף לפני המפתח. לדוגמה, אם מפתח השרת us-central1 מכיל את השורה
ssh-rsa AAAAB3NzaC1yc..., אז~/.ssh/known_hostsצריך להכיל שורה כמו זו:[us-central1-ssh-serialport.googleapis.com]:9600 ssh-rsa AAAAB3NzaC1yc...
מטעמי אבטחה, יכול להיות ש-Google תשנה מדי פעם את מפתח המארח של Google Serial Port SSH. אם הלקוח לא מצליח לאמת את מפתח השרת, צריך לסיים מיד את ניסיון ההתחברות ולבצע את השלבים הקודמים כדי להוריד מפתח מארח חדש של Google Serial Port SSH.
אם אחרי עדכון מפתח המארח אתם ממשיכים לקבל שגיאה באימות המארח מהלקוח, תפסיקו את הניסיונות להתחבר ליציאה הטורית ותפנו לתמיכה של Google. אל תספקו פרטי כניסה בחיבור שבו אימות המארח נכשל.
התנתקות מהקונסולה הטורית
כדי להתנתק מהקונסולה הטורית, פועלים לפי ההוראות של השיטה שבה השתמשתם כדי להתחבר.
המסוף
במסוף Google Cloud , מתנתקים מהקונסולה הטורית באופן הבא:
- סוגרים את החלון או הכרטיסייה בדפדפן שמכילים את החיבור לקונסולה הטורית.
gcloud
כדי להתנתק מהקונסולה הטורית ב-Google Cloud CLI:
- לוחצים על המקש
ENTER. - מקלידים
~.(טילדה, ואז נקודה).
לקוחות SSH אחרים
בתוכנות אחרות של לקוחות SSH, מתנתקים מהקונסולה הטורית באופן הבא:
- לוחצים על המקש
ENTER. - מקלידים
~.(טילדה, ואז נקודה).
ב-Google Cloud CLI או באמצעות SSH, אפשר להקליד ~? כדי לגלות פקודות אחרות. אפשר גם לבדוק את דף ה-man של SSH באמצעות הפקודה הבאה:
man ssh
אל תנסו לנתק את החשבון באחת מהדרכים הבאות:
שילוב המקשים
CTRL+ALT+DELETEאו שילובים דומים אחרים. זה לא יעבוד כי הקונסולה הטורית לא מזהה שילובי מקשים של מקלדת PC.הפקודה
exitאוlogoutלא פועלת כי לאורח אין מידע על חיבורים לרשת או למודם. השימוש בפקודה הזו גורם לסגירה של המסוף ואז לפתיחה שלו מחדש, ואתם נשארים מחוברים לסשן. אם רוצים להפעיל את הפקודותexitו-logoutבסשן, אפשר להגדיר את האפשרותon-dtr-low.
התחברות לקונסולה טורית עם הנחיה להתחברות
אם אתם מנסים לפתור בעיה שקשורה למכונה שהופעלה באופן מלא, או בעיה שמתרחשת אחרי שהמכונה הופעלה אחרי מצב משתמש יחיד, יכול להיות שתתבקשו להזין פרטי כניסה כשאתם מנסים לגשת לקונסולה הטורית.
כברירת מחדל, תמונות מערכת של Linux שסופקו על ידי Google לא מוגדרות כך שיאפשרו כניסות של משתמשים מקומיים שמבוססות על סיסמאות. עם זאת, תמונות Windows שסופקו על ידי Google מוגדרות כך שהן מאפשרות למשתמשים מקומיים להתחבר באמצעות סיסמה.
אם במכונה שלכם פועל קובץ אימג' שהוגדר מראש עם פרטי כניסה ליציאה טורית, אתם צריכים להגדיר סיסמה מקומית במכונה כדי שתוכלו להיכנס לקונסולה הטורית, אם תתבקשו לעשות זאת. אפשר להגדיר סיסמה מקומית אחרי שמתחברים למכונה הווירטואלית או באמצעות סקריפט הפעלה.
הגדרה של סיסמה מקומית באמצעות סקריפט לטעינה בזמן ההפעלה
אתם יכולים להשתמש בסקריפט לטעינה בזמן ההפעלה כדי להגדיר סיסמה מקומית שמאפשרת להתחבר לקונסולה הטורית במהלך יצירת המכונה או אחריה.
כדי להגדיר סיסמה מקומית במופע קיים של מחשוב, בוחרים באחת מהאפשרויות הבאות:
Linux
נכנסים לדף VM instances במסוף Google Cloud .
בעמודה Name (שם), לוחצים על השם של מכונת החישוב שרוצים להוסיף לה סיסמה מקומית.
ייפתח דף הפרטים של מופע המחשוב.
לוחצים על עריכה.
ייפתח הדף לעריכת הפרטים של המכונה הווירטואלית.
בקטע Metadata > Automation, מבצעים את הפעולות הבאות:
אם למכונה יש סקריפט קיים לטעינה בזמן ההפעלה, צריך להסיר אותו ולשמור אותו במקום בטוח.
מוסיפים את הסקריפט הבא לטעינה בזמן ההפעלה:
#!/bin/bash useradd USERNAME echo 'USERNAME:PASSWORD' | chpasswd usermod -aG google-sudoers USERNAMEמחליפים את מה שכתוב בשדות הבאים:
USERNAME: שם המשתמש שרוצים להוסיף.
PASSWORD: הסיסמה של שם המשתמש. מכיוון שמערכות הפעלה מסוימות דורשות אורך ורמת מורכבות מינימליים לסיסמה, צריך לציין סיסמה באופן הבא:הסיסמה צריכה להכיל לפחות 12 תווים.
מומלץ להשתמש בשילוב של אותיות רישיות וקטנות, מספרים וסמלים.
לוחצים על Save.
דף הפרטים של המכונה הווירטואלית נפתח.
לוחצים על איפוס.
כשמופיעה בקשה, מזינים את פרטי הכניסה.
Windows
נכנסים לדף VM instances במסוף Google Cloud .
בעמודה Name, לוחצים על השם של המכונה שרוצים להוסיף לה סיסמה מקומית.
ייפתח דף הפרטים של מופע המחשוב.
לוחצים על עריכה.
נפתח הדף לעריכת הפרטים של מופע המחשוב.
בקטע Metadata:
אם למופע של Compute יש סקריפט לטעינה בזמן ההפעלה קיים, מאחסנים את הסקריפט במקום בטוח, ואז לוחצים על מחיקת פריט כדי למחוק את הסקריפט.
לוחצים על Add item.
בשדה Key (מפתח), מזינים
windows-startup-script-cmd.בשדה ערך, מזינים את הסקריפט הבא:
net user USERNAME PASSWORD /ADD /Y net localgroup administrators USERNAME /ADDמחליפים את מה שכתוב בשדות הבאים:
USERNAME: שם המשתמש שרוצים להוסיף.
PASSWORD: הסיסמה של שם המשתמש. מכיוון שמערכות הפעלה מסוימות דורשות אורך ורמת מורכבות מינימליים לסיסמה, צריך לציין סיסמה באופן הבא:הסיסמה צריכה להכיל לפחות 12 תווים.
מומלץ להשתמש בשילוב של אותיות רישיות וקטנות, מספרים וסמלים.
לוחצים על Save.
דף הפרטים של המכונה הווירטואלית נפתח.
לוחצים על איפוס.
כשמופיעה בקשה, מזינים את פרטי הכניסה.
אחרי שיוצרים את המשתמש, מחליפים את הסקריפט לטעינה בזמן ההפעלה בסקריפט לטעינה בזמן ההפעלה ששמרתם בקטע הזה.
הגדרת סיסמה מקומית באמצעות passwd במכונת Compute
בהוראות הבאות מוסבר איך להגדיר סיסמה מקומית למשתמש במופע של מכונת חישוב, כדי שהמשתמש יוכל להתחבר לקונסולה הטורית של אותו מופע באמצעות הסיסמה שצוינה.
מתחברים למופע של מחשוב. מחליפים את
INSTANCE_NAMEבשם המכונה.gcloud compute ssh INSTANCE_NAME
במכונת ה-Compute, יוצרים סיסמה מקומית באמצעות הפקודה הבאה. הפעולה הזו מגדירה סיסמה למשתמש שאתם מחוברים אליו.
sudo passwd $(whoami)
פועלים לפי ההנחיות כדי ליצור סיסמה.
לאחר מכן, מתנתקים מהמופע ומתחברים לקונסולה הטורית.
מזינים את פרטי הכניסה כשמוצגת בקשה לעשות זאת.
הגדרת התחברות ביציאות טוריות אחרות
הנחיות ההתחברות מופעלות ביציאה 1 כברירת מחדל בכל התמונות הציבוריות של Linux שמשתמשות בניהול השירות של systemd. בתמונות של Windows, הנחיות הכניסה מופעלות כברירת מחדל ביציאה 2 ומנוהלות על ידי Device Manager. עם זאת, לעיתים קרובות יציאה 1 מוצפת בנתוני רישום ובמידע אחר שמוצג ביציאה. לחלופין, אפשר להפעיל בקשת כניסה ביציאה אחרת, כמו יציאה 2 (ttyS1), על ידי הרצת הפקודה הבאה במופע החישוב:
Linux
במערכות הפעלה של Linux שמשתמשות ב-systemd:
הפעלה זמנית של השירות עד להפעלה הבאה מחדש:
sudo systemctl start serial-getty@ttyS1.service
כדי להפעיל את השירות באופן קבוע, החל מההפעלה הבאה מחדש:
sudo systemctl enable serial-getty@ttyS1.service
Windows
במערכות הפעלה של Windows:
פותחים את שורת הפקודה כאדמין.
משנים את יציאת ה-EMS מ-COM2 ל-COM1:
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:9600
הפעלה מחדש של מכונת החישוב
הסבר על מספור היציאות הטוריות
לכל מופע של מכונה וירטואלית יש ארבע יציאות טוריות. כדי לשמור על עקביות עם ה-API של getSerialPortOutput, כל יציאה ממוספרת מ-1 עד 4. ב-Linux ובמערכות דומות אחרות, היציאות הטוריות ממוספרות מ-0 עד 3. לדוגמה, בהרבה תמונות של מערכות הפעלה, המכשירים התואמים הם /dev/ttyS0 עד /dev/ttyS3. ב-Windows, היציאות הטוריות נקראות COM1 עד COM4. כדי להתחבר למה ש-Windows מחשיב כ-COM3 ו-Linux מחשיב כ-ttyS2, צריך לציין את יציאה 3. הטבלה הבאה תעזור לכם להבין לאיזו יציאה אתם רוצים להתחבר.
| יציאות טוריות של מופע של מכונה וירטואלית | יציאות טוריות רגילות של Linux | יציאות COM של Windows |
|---|---|---|
1 |
/dev/ttyS0 |
COM1 |
2 |
/dev/ttyS1 |
COM2 |
3 |
/dev/ttyS2 |
COM3 |
4 |
/dev/ttyS3 |
COM4 |
הערה: הרבה תמונות של Linux משתמשות ביציאה 1 (/dev/ttyS0) כדי לרשום ביומן הודעות מהליבה ומתוכנות המערכת.
שליחת הפסקה בסדרה
התכונה Magic SysRq key מאפשרת לבצע משימות ברמה נמוכה בלי קשר למצב המערכת. לדוגמה, אפשר לסנכרן מערכות קבצים, להפעיל מחדש את המכונה, לסיים תהליכים ולבטל טעינה של מערכות קבצים באמצעות התכונה Magic SysRq key.
כדי לשלוח פקודת Magic SysRq באמצעות הפסקה טורית מדומה:
- לוחצים על המקש
ENTER. - מקלידים
~B(טילדה, ואחריה האותBבאותיות רישיות). - מקלידים את הפקודה Magic SysRq.
צפייה ביומני ביקורת של קונסולה טורית
שירות Compute Engine מספק יומני ביקורת כדי לעקוב אחרי מי שהתחבר למסוף הטורי של מופע ומי שהתנתק ממנו. כדי לצפות ביומנים, אתם צריכים הרשאות לצפייה ביומנים או הרשאת צפייה או עריכה בפרויקט.
- נכנסים לדף Logs Explorer במסוף Google Cloud .
- מרחיבים את התפריט הנפתח ובוחרים באפשרות GCE VM Instance (מופע של מכונה וירטואלית ב-GCE).
- בשורת החיפוש, מקלידים
ssh-serialport.googleapis.comומקישים על Enter. - מופיעה רשימה של יומני ביקורת. ביומנים מתוארים חיבורים וניתוקים מקונסולה טורית. כדי לקבל מידע נוסף, מרחיבים את הערכים.
בכל אחד מיומני הביקורת, אתם יכולים:
- מרחיבים את הנכס
protoPayload. - חפשו את
methodNameכדי לראות את הפעילות שהיומן הזה חל עליה (בקשת חיבור או בקשת ניתוק). לדוגמה, אם ביומן הזה מתועד ניתוק מקונסולה טורית, שם השיטה יהיה"google.ssh-serialport.v1.disconnect". באופן דומה, ביומן החיבורים יופיע"google.ssh-serialport.v1.connect". רשומה ביומן ביקורת נרשמת בתחילת כל סשן בקונסולה הטורית ובסופו.
יש מאפיינים שונים של יומני ביקורת לסוגים שונים של יומנים. לדוגמה, ליומני ביקורת שקשורים לחיבורים יש מאפיינים שספציפיים ליומני חיבורים, וליומני ביקורת של ניתוקים יש קבוצת מאפיינים משלהם. יש מאפיינים מסוימים ביומן הביקורת שמשותפים לשני סוגי היומנים.
כל היומנים של הקונסולה הטורית
בטבלה הבאה מפורטים מאפיינים של יומני ביקורת והערכים שלהם עבור כל היומנים של קונסולה טורית:
| מאפיין (property) | ערך |
|---|---|
requestMetadata.callerIp |
כתובת ה-IP ומספר היציאה שמהם החיבור הגיע. |
serviceName |
ssh-serialport.googleapis.com |
resourceName |
מחרוזת שמכילה את מזהה הפרויקט, האזור, שם המופע ומספר היציאה הטורית, כדי לציין לאיזו קונסולה טורית זה מתייחס.
לדוגמה, projects/myproject/zones/us-east1-a/instances/example-instance/SerialPort/2
הוא מספר היציאה 2, שנקרא גם COM2 או /dev/ttyS1, עבור המופע
example-instance.
|
resource.labels |
מאפיינים שמזהים את מזהה המכונה, האזור ומזהה הפרויקט. |
timestamp |
חותמת זמן שמציינת מתי הסשן התחיל או הסתיים. |
severity |
NOTICE |
operation.id |
מחרוזת מזהה שמזהה באופן ייחודי את הסשן. אפשר להשתמש בה כדי לשייך רשומה של ניתוק לרשומה המתאימה של חיבור. |
operation.producer |
ssh-serialport.googleapis.com |
יומני חיבורים
בטבלה הבאה מפורטות מאפייני יומן הביקורת והערכים שלהם שספציפיים ליומני חיבור:
| מאפיין (property) | ערך |
|---|---|
methodName |
google.ssh-serialport.v1.connect |
status.message |
Connection succeeded. |
request.serialConsoleOptions |
האפשרויות שצוינו בבקשה, כולל מספר היציאה הטורית. |
request.@type |
type.googleapis.com/google.compute.SerialConsoleSessionBegin |
request.username |
שם המשתמש שצוין בבקשה הזו. הפרמטר הזה משמש לבחירת המפתח הציבורי להתאמה. |
operation.first |
TRUE |
status.code |
בבקשות חיבור שהצליחו, הערך google.rpc.Code.OK בשדה status.code מציין שהפעולה הושלמה בהצלחה בלי שגיאות. כי ערך ה-enum של המאפיין הזה הוא
0, המאפיין status.code לא מוצג.
עם זאת, כל קוד שבודק אם הערך של status.code הוא google.rpc.Code.OK פועל כמצופה. |
יומני ניתוקים
בטבלה הבאה מפורטות מאפיינים של יומני ביקורת והערכים שלהם שספציפיים ליומני ניתוק:
| מאפיין (property) | ערך |
|---|---|
methodName |
google.ssh-serialport.v1.disconnect |
response.duration |
משך הסשן בשניות. |
response.@type |
type.googleapis.com/google.compute.SerialConsoleSessionEnd |
operation.last |
TRUE |
יומני חיבורים שנכשלו
כשחיבור נכשל, Compute Engine יוצר רשומה ביומן הביקורת. יומן של חיבור שנכשל דומה מאוד לרשומה של חיבור מוצלח, אבל יש בו את המאפיינים הבאים שמציינים שהחיבור נכשל.
| מאפיין (property) | ערך |
|---|---|
severity |
ERROR |
status.code |
קוד השגיאה הקנוני של Google API שמתאר בצורה הכי טובה את השגיאה. אלה קודי השגיאה האפשריים:
|
status.message |
ההודעה שקריאה לאנשים עבור הרשומה הזו. |
השבתת הגישה האינטראקטיבית לקונסולה הטורית
כדי להשבית את הגישה האינטראקטיבית לקונסולה הטורית, אפשר לשנות את המטא-נתונים במכונה או בפרויקט הספציפיים, או להגדיר מדיניות ארגונית שמשביתה את הגישה האינטראקטיבית לקונסולה הטורית בכל מכונות ה-Compute בפרויקט אחד או יותר ששייכים לארגון.
השבתה של הקונסולה הטורית האינטראקטיבית במכונה או בפרויקט מסוימים
בעלי פרויקטים ומשתמשים עם הרשאת עריכה, וגם משתמשים שקיבלו את התפקיד compute.instanceAdmin.v1, יכולים להשבית את הגישה לקונסולה הטורית על ידי שינוי המטא-נתונים במכונה או בפרויקט הספציפיים. בדומה להפעלת גישה לקונסולה טורית, מגדירים את המטא-נתונים serial-port-enable לערך FALSE:
serial-port-enable=FALSE
לדוגמה, באמצעות Google Cloud CLI, אפשר להחיל את המטא-נתונים האלה על מופע ספציפי באופן הבא:
gcloud compute instances add-metadata instance-name \
--metadata=serial-port-enable=FALSE
כדי להחיל את המטא-נתונים על הפרויקט:
gcloud compute project-info add-metadata \
--metadata=serial-port-enable=FALSE
השבתת גישה אינטראקטיבית לקונסולה הטורית באמצעות מדיניות הארגון
אם הוקצה לכם התפקיד orgpolicy.policyAdmin בארגון, אתם יכולים להגדיר מדיניות ארגונית שתמנע גישה אינטראקטיבית לקונסולה הטורית, בלי קשר לשאלה אם הגישה האינטראקטיבית לקונסולה הטורית מופעלת בשרת המטא-נתונים. אחרי שמגדירים את מדיניות הארגון, היא מבטלת את מפתח המטא-נתונים serial-port-enable, ואף משתמש בארגון או בפרויקט לא יכול להפעיל גישה אינטראקטיבית לקונסולה הטורית. כברירת מחדל, האילוץ הזה מוגדר כ-FALSE.
המגבלה להשבתת הגישה האינטראקטיבית לקונסולה הטורית היא:
compute.disableSerialPortAccess
כדי להגדיר את המדיניות הזו בארגון, פועלים לפי ההוראות הבאות. אחרי שמגדירים מדיניות, אפשר להעניק פטורים על בסיס כל פרויקט.
gcloud
כדי להגדיר את המדיניות באמצעות Google Cloud CLI, מריצים את הפקודה resource-manager enable-enforce. מחליפים את organization-id במזהה הארגון.
לדוגמה, 1759840282.
gcloud resource-manager org-policies enable-enforce \
--organization organization-id compute.disableSerialPortAccess
REST
כדי להגדיר מדיניות ב-API, שולחים בקשת POST לכתובת ה-URL הבאה.
מחליפים את organization-name בשם הארגון.
לדוגמה, organizations/1759840282.
POST https://cloudresourcemanager.googleapis.com/v1/organization-name:setOrgPolicy
גוף הבקשה צריך להכיל אובייקט policy עם המגבלה הבאה:
"constraint": "constraints/compute.disableSerialPortAccess"
לדוגמה:
{
"policy":
{
"booleanPolicy":
{
"enforced": TRUE
},
"constraint": "constraints/compute.disableSerialPortAccess"
}
}
המדיניות נכנסת לתוקף באופן מיידי, כך שבכל הפרויקטים ששייכים לארגון, הגישה האינטראקטיבית לקונסולה הטורית תיחסם באופן מיידי.
כדי להשבית את המדיניות באופן זמני, משתמשים בפקודה disable-enforce:
gcloud resource-manager org-policies disable-enforce \
--organization organization-id compute.disableSerialPortAccess
לחלופין, אפשר לשלוח בקשת API שבה גוף הבקשה מגדיר את הפרמטר enforced לערך FALSE:
{
"policy":
{
"booleanPolicy":
{
"enforced": FALSE
},
"constraint": "constraints/compute.disableSerialPortAccess"
}
}
הגדרת מדיניות הארגון ברמת הפרויקט
אפשר להגדיר את אותה מדיניות ארגונית על בסיס כל פרויקט. ההגדרה הזו מבטלת את ההגדרה ברמת הארגון.
gcloud
כדי להשבית את האכיפה של המדיניות הזו בפרויקט ספציפי. מחליפים את project-id במזהה הפרויקט.
gcloud resource-manager org-policies disable-enforce \
--project project-id compute.disableSerialPortAccess
כדי לאכוף את המדיניות הזו, אפשר להשתמש בפקודה enable-enforce עם אותם ערכים.
REST
ב-API, שולחים POST בקשה לכתובת ה-URL הבאה כדי להפעיל גישה אינטראקטיבית לקונסולה הטורית של הפרויקט, ומחליפים את project-id במזהה הפרויקט:
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setOrgPolicy
גוף הבקשה צריך להכיל אובייקט policy עם האילוץ הבא:
"constraint": "constraints/compute.disableSerialPortAccess"
לדוגמה:
{
"policy":
{
"booleanPolicy":
{
"enforced": FALSE
},
"constraint": "constraints/compute.disableSerialPortAccess"
}
}
פתרון בעיות בחיבורים לממשק המשתמש האינטרנטי
אם נתקלתם בשגיאה "SSH authentication failed" או שהועברתם לדף שגיאה כללי של SSH כשניסיתם להשתמש בכפתור Connect to serial console, בדקו את הדברים הבאים:
- VPC Service Controls: אם הפרויקט שלכם מוגן על ידי VPC Service Controls, אי אפשר להשתמש בקונסולה הטורית שמבוססת על דפדפן. במקום זאת, משתמשים בפקודה
gcloud compute connect-to-serial-port. - הרשאות IAM: מוודאים שיש לכם את התפקיד
iam.serviceAccountUserבחשבון השירות של המופע. שער הקונסולה הטורית דורש את התפקיד הזה כדי לאמת את החיבור. - OS Login: אם המופע משתמש ב-OS Login, מוודאים שדחפתם את מפתחות ה-SSH לפרופיל שלכם ב-OS Login או למטא-נתונים של הפרויקט.
- גישה פרטית ל-Google: אם אתם משתמשים בגישה פרטית ל-Google עם תו כללי ל-DNS בשביל
*.googleapis.com, יכול להיות שנקודת הקצה של הקונסולה הטורית (REGION-ssh-serialport.googleapis.com) לא תתקבל בצורה נכונה. חשוב לוודא שהתעבורה הזו מנותבת דרך האינטרנט הציבורי.
טיפים וטריקים
אם אתם נתקלים בבעיות בחיבור באמצעות לקוח SSH רגיל, אבל
gcloud compute connect-to-serial-portמתחבר בהצלחה, יכול להיות שיהיה לכם שימושי להריץ אתgcloud compute connect-to-serial-portעם האפשרות--dry-runבשורת הפקודה כדי לראות את פקודת ה-SSH שהייתה מופעלת בשמכם, ולהשוות את האפשרויות לפקודה שבה אתם משתמשים.אם אתם משתמשים במכונה של Windows שמופעל בה OS Login ונתקלים בשגיאה
UNAUTHENTICATED, ודאו שמפתחות ה-SSH הציבוריים פורסמו במטא-נתונים של הפרויקט או המכונה. מידע נוסף זמין במאמר בנושא ניהול מפתחות SSH במטא-נתונים.כשמגדירים את קצב העברת הנתונים, שנקרא גם קצב האפנון, אפשר להגדיר כל קצב שרוצים, כמו
stty 9600, אבל בדרך כלל התכונה מאלצת את הקצב בפועל להיות 115,200 bps (בערך 11.5kB/sec). הסיבה לכך היא שהרבה תמונות ציבוריות מוגדרות כברירת מחדל לקצבי העברת נתונים איטיים, כמו 9,600 בקונסולה הטורית, וההפעלה שלהן תהיה איטית.חלק מקובצי אימג' של מערכת ההפעלה כוללים הגדרות ברירת מחדל לא נוחות ביציאה הטורית. לדוגמה, ב-CentOS 7, ברירת המחדל של המקש Enter במסוף היא לשלוח
stty icrnl, שנקרא גםCRאו^M. יכול להיות שמעטפת bash תסתיר את זה עד שתנסו להגדיר סיסמה, ואז תתפלאו למה נראה שהיא נתקעת בהנחיהpassword:.לחלק מהתמונות הציבוריות יש מפתחות לבקרת עבודות שמושבתים כברירת מחדל אם מצרפים מעטפת ליציאה בדרכים מסוימות. דוגמאות למקשים האלה כוללות את
^Zואת^C. יכול להיות שהפקודהsetsidתפתור את הבעיה. אחרת, אם מופיעה ההודעהjob control is disabled in this shell, צריך להיזהר לא להריץ פקודות שצריך להפסיק.כדאי לציין למערכת את גודל החלון שבו אתם משתמשים, כדי ש-bash ועורכי הטקסט יוכלו לנהל אותו בצורה נכונה. אחרת, יכול להיות שתיתקלו בהתנהגות מוזרה של התצוגה כי bash או עורכים מנסים לשנות את התצוגה על סמך הנחות שגויות לגבי מספר השורות והעמודות שזמינות. משתמשים בפקודה
stty rows Y cols Xובדגלstty -aכדי לראות מה ההגדרה. לדוגמה:stty rows 60 cols 120(אם החלון הוא 120 תווים על 60 שורות).לדוגמה, אם מתחברים באמצעות SSH ממכונה א' למכונה ב', ואז למכונה ג', ויוצרים סשן SSH מקונן, ורוצים להשתמש בפקודות עם סימן הטילדה (~) כדי להתנתק או לשלוח אות הפסקה טורי, צריך להוסיף לפקודה מספיק סימני טילדה כדי להגיע ללקוח ה-SSH הנכון. פקודה אחרי תו טילדה אחד מפורשת על ידי לקוח ה-SSH במכונה א'. פקודה אחרי שני תווי טילדה רצופים (Enter~~) מפורשת על ידי הלקוח במכונה ב', וכן הלאה. צריך להקיש על מקש Enter רק פעם אחת, כי הפקודה מועברת עד ליעד ה-SSH הפנימי ביותר. זה נכון לכל שימוש בלקוחות SSH שמספקים את תכונת הבריחה של סימן הטילדה.
אם אתם לא זוכרים כמה תווים של טילדה אתם צריכים, לחצו על Enter ואז הקלידו תווים של טילדה אחד אחרי השני עד שהמכונה תחזיר את הטילדה. ההד הזה מציין שהגעתם לסוף השרשרת, ועכשיו אתם יודעים שכדי לשלוח פקודה עם סימן גל ללקוח ה-SSH הכי מוטמע, צריך להקליד סימן גל אחד פחות ממה שהקלדתם.
אפשרויות מתקדמות
אתם יכולים גם להשתמש באפשרויות המתקדמות הבאות עם היציאה הטורית.
שליטה במספר החיבורים המקסימלי
אפשר להגדיר את המאפיין max-connections כדי לקבוע כמה חיבורים בו-זמניים אפשר לבצע ליציאה הטורית הזו בכל פעם. מספר החיבורים המקסימלי וברירת המחדל הוא 5. לדוגמה:
gcloud compute connect-to-serial-port instance-name \
--port port-number \
--extra-args max-connections=3ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.max-connections=3@ssh-serialport.googleapis.com
הגדרת אפשרויות להפעלה מחדש
כברירת מחדל, בכל פעם שמתחברים לקונסולה הטורית, מקבלים שידור חוזר של 10 השורות האחרונות של הנתונים, בלי קשר לשאלה אם לקוח SSH אחר ראה את 10 השורות האחרונות. אתם יכולים לשנות את ההגדרה הזו ולשלוט במספר השורות שיוחזרו ובאילו שורות, על ידי הגדרת האפשרויות הבאות:
-
replay-lines=N: מגדירים אתNלמספר השורות שרוצים להפעיל מחדש. לדוגמה, אם הערך שלNהוא 50, אז 50 השורות האחרונות של פלט המסוף ייכללו. -
replay-bytes=N: הפעלה חוזרת שלNהבייטים האחרונים. אפשר גם להגדיר אתNלערךnew, ואז כל הפלט שלא נשלח עדיין ללקוח כלשהו יופעל מחדש. -
replay-from=N: הפעלה חוזרת של הפלט החל ממדד בייט מוחלט שאתם מספקים. כדי לקבל את אינדקס הבייטים הנוכחי של הפלט של הקונסולה הטורית, שולחים בקשתgetSerialPortOutput. אם מגדירים אתreplay-from, המערכת מתעלמת מכל שאר האפשרויות להפעלה חוזרת.
ב-Google Cloud CLI, מוסיפים את הפקודה הבאה לפקודה connect-to-serial-port, כאשר N הוא מספר השורות שצוין (או הבייטים או אינדקס הבייטים המוחלט, בהתאם לאפשרות ההפעלה מחדש שבוחרים):
--extra-args replay-lines=N
אם אתם משתמשים בלקוח SSH של צד שלישי, צריך לציין את האפשרות הזו בפקודת ה-SSH:
ssh -i private-ssh-key-file -p 9600 myproject.us-central1-f.example-instance.jane.port=3.replay-lines=N@ssh-serialport.googleapis.com
אפשר גם להשתמש בשילוב של האפשרויות האלה. לדוגמה:
replay-lines=Nוגםreplay-bytes=new- הפעלה מחדש של מספר השורות שצוין או הפעלה מחדש של כל הפלט שלא נשלח בעבר לאף לקוח, לפי הגדול מביניהם. הלקוח הראשון שמתחבר עם שילוב הדגלים הזה רואה את כל הפלט שנשלח ליציאה הטורית, ולקוחות שמתחברים לאחר מכן רואים רק את
Nהשורות האחרונות. דוגמאות:
gcloud compute connect-to-serial-port instance-name--port port-number --extra-args replay-lines=N,replay-bytes=new
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.replay-lines=N.replay-bytes=new@ssh-serialport.googleapis.com
replay-lines=Nוגםreplay-bytes=M
- Replay lines up to, but not more than, the number of lines or bytes
described by these flags, whichever is less. האפשרות הזו לא מפעילה מחדש יותר מ-
NאוMבייט.
gcloud compute connect-to-serial-port instance-name--port port-number --extra-args replay-lines=N,replay-bytes=M
ssh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.replay-lines=N.replay-bytes=M@ssh-serialport.googleapis.com
טיפול בפלט שהושמט
הפלט האחרון של 1MiB לכל יציאה טורית תמיד זמין, ובדרך כלל לקוח ה-SSH לא יפספס פלט מהיציאה הטורית.
אם מסיבה כלשהי לקוח ה-SSH מפסיק לקבל פלט למשך זמן מסוים אבל לא מתנתק, ונוצרים יותר מ-1MiB של נתונים חדשים, יכול להיות שלקוח ה-SSH יפספס חלק מהפלט. אם לקוח ה-SSH לא מקבל נתונים מספיק מהר כדי לעמוד בקצב הפלט ביציאת הקונסולה הטורית, אפשר להגדיר את המאפיין on-dropped-output כדי לקבוע את אופן הפעולה של המסוף.
מגדירים את אחת מהאפשרויות הרלוונטיות הבאות באמצעות המאפיין הזה:
-
insert-stderr-note: הוספת הערה ב-stderrשל לקוח ה-SSH שמציינת שהפלט נמחק. זו האפשרות שמוגדרת כברירת המחדל. -
ignore: הפלט מושמט בשקט ולא קורה כלום. -
disconnect: הפסקת החיבור.
לדוגמה:
gcloud compute connect-to-serial-port instance-name \
--port port-number \
--extra-args on-dropped-output=ignoressh -i private-ssh-key-file -p 9600 project-id.zone.instance-name.username.on-dropped-output=ignore@ssh-serialport.googleapis.com
הפעלת הניתוק באמצעות פקודות יציאה או התנתקות
כדי להפעיל ניתוק בפקודות יציאה או התנתקות, צריך להגדיר את המאפיין on-dtr-low לערך disconnect כשמתחברים לקונסולה הטורית.
ב-CLI של Google Cloud, מוסיפים את הדגל הבא לפקודה connect-to-serial-port:
--extra-args on-dtr-low=disconnect
אם אתם משתמשים בלקוח SSH של צד שלישי, ציינו את האפשרות הזו בפקודת ה-SSH:
ssh -i private-ssh-key-file -p 9600 myproject.us-central1-f.example-instance.jane.port=3.on-dtr-low=disconnect@ssh-serialport.googleapis.com
הפעלת האפשרות disconnect עלולה לגרום לניתוק המכונה פעם אחת או יותר כשמפעילים אותה מחדש, כי מערכת ההפעלה מאפסת את היציאות הטוריות בזמן האתחול.
הגדרת ברירת המחדל של האפשרות on-dtr-low היא none. אם משתמשים בהגדרת ברירת המחדל none, אפשר להפעיל מחדש את המכונה בלי להתנתק מקונסולה טורית, אבל המסוף לא מתנתק באמצעים רגילים כמו פקודות exit או logout, או צירופי מקשים רגילים כמו Ctrl+D.
המאמרים הבאים
getSerialPortOutputAPI- איך שומרים את הפלט של היציאה הטורית וצופים בו גם אחרי שמוחקים את המכונה של Compute Engine.
- טיפים נוספים לפתרון בעיות
- מידע נוסף על מטא-נתונים
- מידע על מפתחות SSH