מדריך SSH - עבודה מרוחקת בלינוקס¶
בשלב מסוים תצטרכו להתחבר למחשב שלא נמצא מולכם פיזית - שרת בענן, מכונה של חברה, או רספברי פיי שיושב במרתף. הכלי שעושה את זה, ושכל מי שעובד עם לינוקס משתמש בו כמעט מדי יום, נקרא SSH. וזה הרבה פחות מפחיד ממה שזה נשמע.
מה זה בעצם SSH¶
SSH, קיצור של Secure Shell, הוא פרוטוקול שמאפשר לכם להתחבר למחשב מרוחק ולקבל טרמינל מלא עליו, בדיוק כאילו אתם יושבים מולו פיזית. כל מה שתקלידו יעבור מוצפן דרך הרשת אל המחשב השני, ירוץ שם, והתוצאה תחזור אליכם. זו הסיבה שהוא נקרא secure - לפני SSH היו פרוטוקולים דומים שהעבירו הכל בטקסט גלוי, מה שהיה סיכון אבטחה עצום.
החיבור הבסיסי¶
הפקודה הכי בסיסית נראית כך:
username הוא שם המשתמש שאיתו אתם מתחברים, ו-server_ip הוא כתובת ה-IP או שם הדומיין של המחשב המרוחק. למשל:
בפעם הראשונה שאתם מתחברים למחשב חדש, תקבלו אזהרה שמבקשת לאמת את הזהות שלו - זה תקין ונורמלי, זו דרך של SSH לוודא שאתם באמת מתחברים למחשב שאתם חושבים שאתם מתחברים אליו ולא למישהו שמתחזה לו. אחרי שתאשרו, תתבקשו להזין סיסמה, ומשם תמצאו את עצמכם עם טרמינל מלא על המחשב המרוחק.
מפתחות SSH - הדרך הנכונה להתחבר¶
סיסמאות עובדות, אבל הן לא הדרך המומלצת, בעיקר כי הן ניתנות לניחוש או לפריצה בכוח גס, ולעתים דורשות הקלדה ידנית בכל התחברות. הדרך המקצועית היא זוג מפתחות - מפתח פרטי שנשאר אצלכם על המחשב, ומפתח ציבורי שמעתיקים לשרת המרוחק.
יוצרים זוג מפתחות עם:
זה יוצר שני קבצים - אחד פרטי שאסור בשום מצב לשתף עם אף אחד, ואחד ציבורי שאותו מעתיקים לשרת. את ההעתקה עושים עם:
מאותו רגע, ההתחברות תעבוד בלי סיסמה בכלל - המחשב המרוחק מזהה אתכם לפי המפתח הפרטי שנמצא אצלכם, בדרך הרבה יותר בטוחה ונוחה.
העברת קבצים עם scp¶
מעבר לפתיחת טרמינל מרוחק, לפעמים רק רוצים להעביר קובץ בין המחשב שלכם לשרת. לשם כך יש scp, שעובד באותו עיקרון של SSH אבל מיועד להעברת קבצים:
זה מעתיק את file.txt מהמחשב שלכם לתיקיית הבית של המשתמש בשרת המרוחק. אפשר גם לעבוד בכיוון ההפוך, מהשרת אליכם, פשוט הופכים את סדר הפרמטרים.
למה זה כל כך חשוב¶
SSH הוא לא כלי נישתי לאנשי DevOps בלבד - הוא הדרך הסטנדרטית שבה כל מי שעובד עם שרתים בענן מתחבר אליהם. AWS, Google Cloud, כל שירותי האחסון הווירטואליים - כולם מבוססים על כך שאתם מתחברים למכונה שלכם דרך SSH. גם git עצמו, כשאתם משתמשים בחיבור SSH במקום HTTPS, סומך על אותו מנגנון מפתחות בדיוק כדי לזהות אתכם בלי סיסמה בכל פעם שאתם עושים push.
כמה כללי זהב לאבטחה¶
לעולם אל תשתפו את המפתח הפרטי שלכם עם אף אחד, לא במייל, לא בצ'אט, לא בשום מקום. אם אתם עובדים ממספר מחשבים, יוצרים זוג מפתחות נפרד לכל מחשב, במקום להעתיק את אותו מפתח פרטי בין מכונות. ואם אתם מנהלים שרת משלכם, שווה להשבית לחלוטין התחברות עם סיסמה ולהשאיר רק התחברות עם מפתחות, כי זה חוסם רוב הניסיונות האוטומטיים לפרוץ לשרת מהאינטרנט.
איך לתרגל את זה¶
הדרך הכי טובה ללמוד SSH היא להקים לעצמכם שרת קטן, בין אם בענן ובין אם מכונה וירטואלית, ולהתחבר אליו בעצמכם, ליצור מפתחות, ולנסות להעביר קבצים. זה מעשי הרבה יותר מקריאה בלבד, ובדיוק בגלל זה בקורס לינוקס הבסיסי שלנו יש תרגילים שמעבירים אתכם דרך התהליך הזה צעד אחר צעד.
תרגלו עבודה מרוחקת בקורס לינוקס הבסיסי
ואם אתם נתקעים באמצע הגדרת חיבור SSH, תשאלו בדיסקורד - זו בדיוק סוג הבעיה שקל לפתור עם עוד זוג עיניים.