פתרון בעיות באמצעות המסוף הטורי

בדף הזה מוסבר איך להפעיל גישה אינטראקטיבית לקונסולה הטורית של מכונה כדי לנפות באגים בבעיות אתחול ורישות, לפתור בעיות במכונות שלא פועלות, ליצור אינטראקציה עם GRand Unified Bootloader ‏ (GRUB) ולבצע משימות אחרות לפתרון בעיות.

למכונת Compute Engine יש ארבע יציאות טוריות וירטואליות. האינטראקציה עם יציאה טורית דומה לשימוש בחלון הטרמינל, בכך שהקלט והפלט הם במצב טקסט בלבד ואין ממשק גרפי או תמיכה בעכבר. מערכת ההפעלה, ה-BIOS וישויות אחרות ברמת המערכת של המופע כותבות לעיתים קרובות פלט ליציאות הטוריות, ויכולות לקבל קלט כמו פקודות או תשובות להנחיות. בדרך כלל, הישויות האלה ברמת המערכת משתמשות ביציאה הטורית הראשונה (יציאה 1), ולעיתים קרובות היציאה הטורית הראשונה נקראת "הקונסולה הטורית".

אם אתם רק צריכים לראות את הפלט של היציאה הטורית בלי להנפיק פקודות לקונסולה הטורית, אתם יכולים להפעיל את ה-method‏ getSerialPortOutput או להשתמש ב-Cloud Logging כדי לקרוא את המידע שהמכונה כתבה ליציאה הטורית שלה. מידע נוסף זמין במאמר הצגת יומנים של יציאה טורית. עם זאת, אם נתקלתם בבעיות בגישה למכונה באמצעות SSH, או אם אתם צריכים לפתור בעיות במכונה שלא הופעלה באופן מלא, אתם יכולים להפעיל גישה אינטראקטיבית לקונסולה הטורית, שמאפשרת לכם להתחבר לכל אחת מהיציאות הטוריות של המכונה ולקיים איתה אינטראקציה. לדוגמה, אפשר להריץ פקודות ישירות ולהגיב להנחיות ביציאה הטורית.

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

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

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

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

    המסוף

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

    gcloud

    1. התקינו את ה-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. בכל מקרה, כל הגדרה לכל מופע מבטלת את ההגדרה ברמת הפרויקט או את הגדרת ברירת המחדל.

המסוף

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

    מעבר אל Metadata

  2. לוחצים על עריכה כדי לערוך את רשומות המטא-נתונים.
  3. מוסיפים רשומה חדשה שמשתמשת במפתח serial-port-enable ובערך TRUE.
  4. שומרים את השינויים.

gcloud

ב-Google Cloud CLI, מזינים את הפקודה project-info add-metadata באופן הבא:

gcloud compute project-info add-metadata \
    --metadata serial-port-enable=TRUE

REST

ב-API, שולחים בקשה לשיטה projects().setCommonInstanceMetadata ומציינים את המפתח serial-port-enable עם הערך TRUE:

{
 "fingerprint": "FikclA7UBC0=",
 "items": [
  {
   "key": "serial-port-enable",
   "value": "TRUE"
  }
 ]
}

הפעלת גישה למכונת חישוב

מפעילים גישה אינטראקטיבית לקונסולה הטורית של מכונה ספציפית. הגדרה לכל מופע, אם היא קיימת, מבטלת כל הגדרה ברמת הפרויקט. אפשר גם להשבית את הגישה למכונה ספציפית, גם אם הגישה מופעלת ברמת הפרויקט, על ידי הגדרת serial-port-enable ל-FALSE במקום ל-TRUE. באופן דומה, אתם יכולים להפעיל גישה למכונה וירטואלית אחת או יותר גם אם היא מושבתת בפרויקט, באופן מפורש או כברירת מחדל.

המסוף

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

    כניסה לדף VM instances

  2. לוחצים על המופע שרוצים להפעיל עבורו את הגישה.
  3. לוחצים על Edit.
  4. בקטע Remote access, מסמנים את התיבה Enable connecting to יציאות טוריות.
  5. שומרים את השינויים.

gcloud

ב-Google Cloud CLI, מזינים את הפקודה instances add-metadata ומחליפים את instance-name בשם של המכונה.

gcloud compute instances add-metadata instance-name \
    --metadata serial-port-enable=TRUE

REST

ב-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:

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

    לדף VM instances

  2. לוחצים על המכונה שאליה רוצים להתחבר.
  3. בקטע פרטים, לוחצים על חיבור למסוף סדרתי כדי להתחבר ליציאה שמוגדרת כברירת מחדל (יציאה 1).
  4. אם רוצים להתחבר ליציאה טורית אחרת, לוחצים על החץ למטה לצד הלחצן Connect to serial console ומשנים את מספר היציאה בהתאם.
  5. במקרים של מכונות וירטואליות של 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, מבצעים את השלבים הבאים:

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

  2. פותחים את קובץ המארחים המוכרים, שבדרך כלל נמצא ב-~/.ssh/known_hosts.

  3. מוסיפים את התוכן של מפתח המארח של ה-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 , מתנתקים מהקונסולה הטורית באופן הבא:

  1. סוגרים את החלון או הכרטיסייה בדפדפן שמכילים את החיבור לקונסולה הטורית.

gcloud

כדי להתנתק מהקונסולה הטורית ב-Google Cloud CLI:

  1. לוחצים על המקש ENTER.
  2. מקלידים ~. (טילדה, ואז נקודה).

לקוחות SSH אחרים

בתוכנות אחרות של לקוחות SSH, מתנתקים מהקונסולה הטורית באופן הבא:

  1. לוחצים על המקש ENTER.
  2. מקלידים ~. (טילדה, ואז נקודה).

ב-Google Cloud CLI או באמצעות SSH, אפשר להקליד ~? כדי לגלות פקודות אחרות. אפשר גם לבדוק את דף ה-man של SSH באמצעות הפקודה הבאה:

man ssh

אל תנסו לנתק את החשבון באחת מהדרכים הבאות:

  • שילוב המקשים CTRL+ALT+DELETE או שילובים דומים אחרים. זה לא יעבוד כי הקונסולה הטורית לא מזהה שילובי מקשים של מקלדת PC.

  • הפקודה exit או logout לא פועלת כי לאורח אין מידע על חיבורים לרשת או למודם. השימוש בפקודה הזו גורם לסגירה של המסוף ואז לפתיחה שלו מחדש, ואתם נשארים מחוברים לסשן. אם רוצים להפעיל את הפקודות exit ו-logout בסשן, אפשר להגדיר את האפשרות on-dtr-low.

התחברות לקונסולה טורית עם הנחיה להתחברות

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

כברירת מחדל, תמונות מערכת של Linux שסופקו על ידי Google לא מוגדרות כך שיאפשרו כניסות של משתמשים מקומיים שמבוססות על סיסמאות. עם זאת, תמונות Windows שסופקו על ידי Google מוגדרות כך שהן מאפשרות למשתמשים מקומיים להתחבר באמצעות סיסמה.

אם במכונה שלכם פועל קובץ אימג' שהוגדר מראש עם פרטי כניסה ליציאה טורית, אתם צריכים להגדיר סיסמה מקומית במכונה כדי שתוכלו להיכנס לקונסולה הטורית, אם תתבקשו לעשות זאת. אפשר להגדיר סיסמה מקומית אחרי שמתחברים למכונה הווירטואלית או באמצעות סקריפט הפעלה.

הגדרה של סיסמה מקומית באמצעות סקריפט לטעינה בזמן ההפעלה

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

כדי להגדיר סיסמה מקומית במופע קיים של מחשוב, בוחרים באחת מהאפשרויות הבאות:

Linux

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

    כניסה לדף VM instances

  2. בעמודה Name (שם), לוחצים על השם של מכונת החישוב שרוצים להוסיף לה סיסמה מקומית.

    ייפתח דף הפרטים של מופע המחשוב.

  3. לוחצים על עריכה.

    ייפתח הדף לעריכת הפרטים של המכונה הווירטואלית.

  4. בקטע Metadata > Automation, מבצעים את הפעולות הבאות:

    1. אם למכונה יש סקריפט קיים לטעינה בזמן ההפעלה, צריך להסיר אותו ולשמור אותו במקום בטוח.

    2. מוסיפים את הסקריפט הבא לטעינה בזמן ההפעלה:

      #!/bin/bash
      useradd USERNAME
      echo 'USERNAME:PASSWORD' | chpasswd
      usermod -aG google-sudoers USERNAME
      

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

      • ‫USERNAME: שם המשתמש שרוצים להוסיף.

      • ‫PASSWORD: הסיסמה של שם המשתמש. מכיוון שמערכות הפעלה מסוימות דורשות אורך ורמת מורכבות מינימליים לסיסמה, צריך לציין סיסמה באופן הבא:

        • הסיסמה צריכה להכיל לפחות 12 תווים.

        • מומלץ להשתמש בשילוב של אותיות רישיות וקטנות, מספרים וסמלים.

  5. לוחצים על Save.

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

  6. לוחצים על איפוס.

  7. מתחברים לקונסולה הטורית.

  8. כשמופיעה בקשה, מזינים את פרטי הכניסה.

Windows

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

    כניסה לדף VM instances

  2. בעמודה Name, לוחצים על השם של המכונה שרוצים להוסיף לה סיסמה מקומית.

    ייפתח דף הפרטים של מופע המחשוב.

  3. לוחצים על עריכה.

    נפתח הדף לעריכת הפרטים של מופע המחשוב.

  4. בקטע Metadata:

    1. אם למופע של Compute יש סקריפט לטעינה בזמן ההפעלה קיים, מאחסנים את הסקריפט במקום בטוח, ואז לוחצים על מחיקת פריט כדי למחוק את הסקריפט.

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

    3. בשדה Key (מפתח), מזינים windows-startup-script-cmd.

    4. בשדה ערך, מזינים את הסקריפט הבא:

      net user USERNAME PASSWORD /ADD /Y
      net localgroup administrators USERNAME /ADD
      

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

      • ‫USERNAME: שם המשתמש שרוצים להוסיף.

      • ‫PASSWORD: הסיסמה של שם המשתמש. מכיוון שמערכות הפעלה מסוימות דורשות אורך ורמת מורכבות מינימליים לסיסמה, צריך לציין סיסמה באופן הבא:

        • הסיסמה צריכה להכיל לפחות 12 תווים.

        • מומלץ להשתמש בשילוב של אותיות רישיות וקטנות, מספרים וסמלים.

  5. לוחצים על Save.

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

  6. לוחצים על איפוס.

  7. מתחברים למסוף הטורי.

  8. כשמופיעה בקשה, מזינים את פרטי הכניסה.

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

הגדרת סיסמה מקומית באמצעות passwd במכונת Compute

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

  1. מתחברים למופע של מחשוב. מחליפים את INSTANCE_NAME בשם המכונה.

    gcloud compute ssh INSTANCE_NAME
  2. במכונת ה-Compute, יוצרים סיסמה מקומית באמצעות הפקודה הבאה. הפעולה הזו מגדירה סיסמה למשתמש שאתם מחוברים אליו.

    sudo passwd $(whoami)
  3. פועלים לפי ההנחיות כדי ליצור סיסמה.

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

  5. מזינים את פרטי הכניסה כשמוצגת בקשה לעשות זאת.

הגדרת התחברות ביציאות טוריות אחרות

הנחיות ההתחברות מופעלות ביציאה 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 באמצעות הפסקה טורית מדומה:

  1. לוחצים על המקש ENTER.
  2. מקלידים ~B (טילדה, ואחריה האות B באותיות רישיות).
  3. מקלידים את הפקודה Magic SysRq.

צפייה ביומני ביקורת של קונסולה טורית

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

  1. נכנסים לדף Logs Explorer במסוף Google Cloud .

    כניסה לדף Logs Explorer

  2. מרחיבים את התפריט הנפתח ובוחרים באפשרות GCE VM Instance (מופע של מכונה וירטואלית ב-GCE).
  3. בשורת החיפוש, מקלידים ssh-serialport.googleapis.com ומקישים על Enter.
  4. מופיעה רשימה של יומני ביקורת. ביומנים מתוארים חיבורים וניתוקים מקונסולה טורית. כדי לקבל מידע נוסף, מרחיבים את הערכים.

בכל אחד מיומני הביקורת, אתם יכולים:

  1. מרחיבים את הנכס protoPayload.
  2. חפשו את 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 שמתאר בצורה הכי טובה את השגיאה. אלה קודי השגיאה האפשריים:

  • ‫google.rpc.Code.INVALID_ARGUMENT: החיבור נכשל כי הלקוח סיפק מספר יציאה לא תקין או ניסה להגיע לערוץ לא ידוע. כאן מפורטת רשימת מספרי היציאות התקינים.
  • ‫google.rpc.Code.PERMISSION_DENIED: לא הפעלתם את הקונסולה הטורית האינטראקטיבית בשרת המטא-נתונים. מידע נוסף זמין במאמר בנושא הפעלת גישה אינטראקטיבית בקונסולה הטורית.
  • ‫google.rpcCode.UNAUTHENTICATED: לא נמצאו מפתחות SSH או שלא נמצא מפתח SSH תואם למופע הזה. מוודאים שהאימות שלכם למכונת ה-VM בוצע.
  • ‫google.rpc.Code.UNKNOWN: אירעה שגיאה לא ידועה בבקשה שלך. אפשר לפנות אל Google בקבוצת הדיון gce או לדווח על באג.
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=3
ssh -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=ignore
ssh -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.

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