בדף הזה מוסבר איך להשתמש ב-gcloud CLI כדי להתחבר לתחנת העבודה ממחשב מקומי באמצעות SSH (או כל פרוטוקול TCP אחר).
Cloud Workstations משתמשת במנהרה כדי להעביר תנועת TCP בין יציאה במחשב המקומי לבין יציאה בתחנת העבודה, בלי לחשוף את תחנת העבודה לאינטרנט. האימות של החיבורים מתבצע באמצעות אישורים מ-gcloud CLI, וההרשאה מתבצעת בהתאם למדיניות IAM של תחנת העבודה היעד.
אחרי שמקימים את מנהרת ה-TCP בין היציאה המקומית לבין תחנת העבודה, אפשר להשתמש בה כדי להעביר תנועה מלקוח SSH, מ-curl או מכל אפליקציה אחרת שמשתמשת ב-TCP.
כדי להקל על השימוש, Cloud Workstations מספקת את הפקודה gcloud workstations ssh, שמקימה את מנהרת ה-TCP ומריצה לקוח SSH עם פקודת CLI אחת של gcloud.
בכל שאר תרחישי השימוש, משתמשים בפקודה
gcloud workstations start-tcp-tunnel
כדי ליצור את מנהרת ה-TCP ולהפעיל את האפליקציה שתשתמש במנהרה (לדוגמה, curl) במסוף נפרד.
לפני שמתחילים
אם עדיין אין לכם תחנת עבודה להתחבר אליה, אתם צריכים להגדיר תחנת עבודה.
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של
gcloudבאמצעות המאגר המאוחד לניהול זהויות.מוודאים שיש לכם את תפקיד ה-IAM Cloud Workstations User בתחנת העבודה שאליה אתם מתחברים.
התחברות לתחנת העבודה באמצעות SSH
כדי ליצור חיבור SSH מאובטח לתחנת העבודה, משתמשים בפקודה gcloud workstations ssh, שמתחילה מנהרת TCP ומריצה לקוח SSH.
מריצים את הפקודה הבאה בחלון מסוף מקומי:
gcloud workstations ssh \
--project=PROJECT_ID \
--region=REGION \
--cluster=CLUSTER_NAME \
--config=CONFIG_NAME \
--port=WORKSTATION_PORT \
--local-host-port=localhost:LOCAL_PORT \
WORKSTATION_NAME
מחליפים את הערכים הבאים:
PROJECT_ID: Google Cloud מזהה הפרויקט של הפרויקט שמכיל את תחנת העבודה. אם לא מציינים פרויקט, המערכת משתמשת בפרויקט הנוכחי.
REGION: האזור שבו נמצא האשכול של תחנת העבודה – לדוגמה,us-central1.
CLUSTER_NAME: השם של אשכול תחנות העבודה שמכיל את תחנת העבודה.
CONFIG_NAME: השם של תצורת תחנת העבודה שמכילה את תחנות העבודה האלה.
WORKSTATION_PORT(אופציונלי): היציאה בתחנת העבודה שאליה יש לשלוח את התנועה. אם לא מציינים יציאה, התנועה תישלח ליציאה22. כל קובצי האימג' של Cloud Workstations שמוגדרים מראש כוללים שרת SSH שפועל ביציאה22של תחנת העבודה.
LOCAL_PORT(אופציונלי): יציאת ה-localhost שממנה התנועה תישלח. מספרי היציאה החוקיים הם1024עד65535. אם לא מציינים את הדגל--local-host-portאו מציינים יציאה של0, המערכת בוחרת יציאה לא בשימוש באופן אוטומטי.
WORKSTATION_NAME: השם של תחנת העבודה.
הגדרת SSH והקובץ .ssh/config
כשמשתמשים ב-gcloud workstations ssh, הפקודה מנתבת את החיבור דרך localhost. כתוצאה מכך, המערכת לא מחילה באופן אוטומטי רשומות Host מהקובץ ~/.ssh/config שמשתמשות בשם תחנת העבודה.
כדי להחיל הגדרות SSH מותאמות אישית, בוחרים באחת מהאפשרויות הבאות:
אפשרות 1: העברת דגלים בשורת הפקודה
אפשר להעביר אפשרויות SSH ישירות ללקוח ה-SSH הבסיסי על ידי הוספתן אחרי מקף כפול (--):
gcloud workstations ssh \
--project=PROJECT_ID \
--region=REGION \
--cluster=CLUSTER_NAME \
--config=CONFIG_NAME \
WORKSTATION_NAME \
-- -o SSH_OPTION=VALUE
אפשרות 2: שימוש במנהרת TCP קבועה וב-.ssh/config
אם אתם מעדיפים להשתמש בקובץ ~/.ssh/config:
מפעילים מנהרת TCP מתמשכת בחלון טרמינל נפרד ומציינים יציאה מקומית:
gcloud workstations start-tcp-tunnel \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ --local-host-port=localhost:LOCAL_PORT \ WORKSTATION_NAME \ 22מוסיפים בלוק הגדרות לקובץ
~/.ssh/configבמחשב המקומי:Host WORKSTATION_NAME HostName localhost Port LOCAL_PORT User user # Disable host key checking for ephemeral cloud workstations StrictHostKeyChecking no UserKnownHostsFile /dev/null # Add any other SSH options hereמתחברים לתחנת העבודה באמצעות SSH רגיל:
ssh WORKSTATION_NAME
שימוש במנהרת TCP כדי להעביר תנועת TCP שרירותית לתחנת העבודה
כדי להתחבר לתחנת עבודה באמצעות אפליקציית TCP שאינה ssh, משתמשים בפקודה gcloud workstations start-tcp-tunnel:
מריצים את הפקודה הבאה ב-CLI של
gcloudכדי ליצור מנהרת TCP מאומתת.כדי להעתיק את הפקודה למאגר של העתקה והדבקה, לוחצים על העתקת דוגמת הקוד ואז מדביקים את הפקודה בחלון טרמינל מקומי:
gcloud workstations start-tcp-tunnel \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ --local-host-port=localhost:LOCAL_PORT \ WORKSTATION_NAME \ WORKSTATION_PORTמחליפים את הערכים הבאים:
PROJECT_ID: Google Cloud מזהה הפרויקט של הפרויקט שמכיל את תחנת העבודה. אם לא מציינים פרויקט, המערכת משתמשת בפרויקט הנוכחי.
REGION: האזור שבו נמצא האשכול של תחנת העבודה – לדוגמה,us-central1.
CLUSTER_NAME: השם של אשכול תחנות העבודה שמכיל את תחנת העבודה.
CONFIG_NAME: השם של תצורת תחנת העבודה שמכילה את תחנות העבודה האלה.
LOCAL_PORT(אופציונלי): יציאת ה-localhost שממנה התנועה תישלח. מספרי היציאה החוקיים הם1024עד65535. אם לא מציינים את הדגל--local-host-portאו מציינים יציאה של0, המערכת בוחרת יציאה שלא נמצאת בשימוש באופן אוטומטי.
WORKSTATION_NAME: השם של תחנת העבודה.
WORKSTATION_PORT: היציאה של תחנת העבודה שאליה התנועה צריכה להישלח. קובצי אימג' של Cloud Workstations שמוגדרים מראש כוללים שרת SSH שפועל ביציאה22של תחנת העבודה.
הפקודה
gcloudCLI מבצעת בדיקת קישוריות עם תחנת העבודה, פותחת מנהרה ואז מציגה מספר יציאה:Listening on port [LOCAL_PORT].כל התעבורה שנשלחת אל
localhost:LOCAL_PORTמועברת אל תחנת העבודה. הגישה ליציאה אפשרית רק לאפליקציות שפועלות במחשב המקומי.משאירים את ה-CLI של
gcloudפתוח ופותחים מסוף אחר כדי להריץ את האפליקציה שמתחברת לתחנת העבודה.לדוגמה, אם אתם מריצים שרת בתחנת העבודה שמשרת את היציאה WORKSTATION_PORT, ובשלב הקודם יצרתם מנהרת TCP שמעבירה תנועה בין היציאה המקומית LOCAL_PORT לבין היציאה WORKSTATION_PORT בתחנת העבודה, תוכלו להריץ את הפקודה
curlבמחשב המקומי כדי להתחבר לשרת בתחנת העבודה:curl localhost:LOCAL_PORT Hello, world!בסיום, חוזרים לטרמינל שבו התחלתם את מנהרת ה-TCP ומפריעים ל-CLI של
gcloudעל ידי הקשה על Control+C.
שימוש בשרתי SSH ביציאות שונות
קובצי אימג' בקונטיינר בהתאמה אישית יכולים גם להשתמש בשרתי SSH בכל יציאה. כדי לתמוך בחיבורים ממנהרת ה-CLI של gcloud, צריך להגדיר שרתי SSH בהתאמה אישית כדי לאפשר אימות באמצעות סיסמה, ולהגדיר את משתמש היעד עם סיסמה ריקה.
Cloud Workstations משתמש ב-Cloud IAM כדי לוודא שרק תעבורה מורשית נשלחת לשרת ה-SSH.
שמירה על סשנים מתמשכים של SSH
אם החיבור לרשת נותק, סשן ה-SSH מתנתק. כדי שהתהליכים ימשיכו לפעול גם כשאתם מנותקים, ותוכלו להתחבר מחדש לסשן מאוחר יותר, אפשר להשתמש בכלי כמו tmux.
כדי להתקין את tmux בתחנת העבודה:
כדי להשתמש ב-
tmuxבאופן מיידי, אפשר להתקין אותו באופן ידני בסשן הנוכחי:sudo apt update sudo apt install -y tmuxמגדירים את תחנת העבודה כך ש-
tmuxיותקן בה בעת ההפעלה. יוצרים את הקובץ/home/user/.workstation/customize_environmentאו מוסיפים לו את הפקודות הבאות:#!/bin/bash sudo apt update sudo apt install -y tmuxמידע נוסף מופיע במאמר בנושא התאמה אישית של תמונת תחנת עבודה קיימת בלי להרחיב אותה.
הופכים את הקובץ לניתן להרצה כדי שהוא יפעל כשהתחנה מתחילה לפעול:
chmod +x /home/user/.workstation/customize_environment
אחרי שמתקינים את tmux:
מתחברים לתחנת העבודה:
gcloud workstations ssh \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ WORKSTATION_NAMEמריצים סשן חדש של tmux מתחנת העבודה:
tmuxאם החיבור נכשל, מתחברים מחדש ומצרפים את הפגישה על ידי הפעלת הפקודה הבאה מהטרמינל המקומי:
gcloud workstations ssh \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ WORKSTATION_NAME \ -- -t tmux attach
המאמרים הבאים
- הגדרת משתני סביבה של קונטיינרים בסשנים של SSH לקובצי אימג' מותאמים אישית של קונטיינרים
- הפעלת העברה של X11 לקובצי אימג' מותאמים אישית של קונטיינרים