חיבור עם SSH הוא דבר שמוכר למפתחים – בין אם משתמשים ב-SSH כדי להתחבר לשרת מרוחק או למכונה ביתית כמו רספברי פיי. חיבור SSH הוא חיבור מאובטח ומוצפן בין הטרמינל שלכם למכונה מרוחק שמאפשר לכם לעבוד על הטרמינל המרוחק כאילו זה הטרמינל שלכם. לגשת לקבצים, להריץ תוכנות וכו'. הפרוטוקול נקרא SSH ואפשר להתחבר לשרתים מרחוק עם SSH גם ממחשב חלונות וגם כמובן מלינוקס או מק. כאשר SSH מאפשר לנו להתחבר לשרת לינוקס מרוחק גם ממחשב חלונות
החיבור אל השרת השני נעשה באמצעות כניסה לטרמינל שלכם והקלדת הפקודה ssh עם שם המשתמש והכתובת של השרת המרוחק. למשל: ssh [email protected] לרספברי מקומי או ssh [email protected] עם שם המשתמש moshe לשרת cohen.com. בד"כ זה השלב שבו אנו נתבקש להקליד סיסמה – אם נקליד אותה כמו שצריך, אז נוכל להכנס לשרת ולעבוד עליו.
אם זה נשמע לכם כמו סינית – אז חבל כי זה באמת ידע שלפי דעתי כדאי שיהיה למפתחים. כאן יש הסבר ודוגמאות איך מתחברים עם SSH לשרת מרוחק. אבל עם סיסמה.
מה הבעיה? שסיסמה זה יכול להיות גם בעייתי מבחינת אבטחה וגם מעיק. סיסמה היא בעייתית – כי אפשר לגנוב אותה, לעשות לה brute force או, כמו שבדרך כלל קורה, אנו נוטים למחזר ססמאות ואז הן דולפות מאיזה אתר פח אחר ופתאום נוכלים מוצאים אותן. בנוסף, ססמה זה דבר מעיק גם אם אנו משתמשים במנהל ססמאות – כי צריך להקליד אותה ולזכור אותה.
פתרון מאובטח וגם נוח יותר הוא שימוש במפתח ציבורי ומפתח פרטי. אפשר לייצר אותם במחשב שלכם (כן, גם חלונות), לשגר את המפתח הציבורי לכל מכונה שהיא ואז לבצע חיבור מאובטח עם SSH בלי צורך להקליד ססמה. זה אומר שאתם צריכים כן לאבטח את מכונת העבודה שלכם – למשל לשים עליה ססמה כדי שלא כל אחד יוכל לגשת ללפטופ שלכם ולהתחבר לכל שרת גם אם הוא גונב את הלפטופ שלכם, או לאבטח את ה-SSH key עם ססמה נוספת, אבל זה כבר סיפור אחר. שימוש במפתח א-סימטרי לאבטחה הוא גם נוח וגם בטוח יותר מססמה.
בנוגע לרקע התיאורטי איך זה עובד – אז יש לי את הפוסט הזה על הצפנה לא סימטרית לפרחחי ווב שמסביר על מפתח ציבורי ופרטי. מומלץ לקרוא אותו להסבר מקיף על איך מפתח ציבורי ופרטי עובדים. מפה – אני יוצא מנקודת הנחה שברור לכם שיש מפתח ציבורי שהוא זה שאנו מעבירים לאתרים ויש גם מפתח פרטי.
יש SSH בחלונות
בחלונות, כרגיל, הכל טיפה יותר מסובך אבל בדגש על טיפה. בחלונות 10/11 צריך להתקין את open ssh client, שזה נעשה דרך ההגדרות של חלונות. נכנסים ל-settings, משם ל-Apps ואז מחפשים את Optional features ומפעילים את OpenSSH Client. זה הכל. במאמר הזה יש הסבר עם צילומי מסך אבל אמרו לי שזה ממש קל. יש גם את הסרטון הזה. שלושים שניות ואתם מסודרים.
מיקום המפתח הפרטי והציבורי
המפתחות הציבוריים והפרטיים נמצאים בתיקית ssh. המיקום שלה במק או לינוקס הוא:
~/.ssh
ובמערכת הפעלה חלונות פה:
C:\Users\<your_username>\.ssh
ניתן לייצר מפתח ציבורי/פרטי בקלות גם בחלונות וגם במק או לינוקס באמצעות הפקודה שמובאת כאן כדוגמא:
ssh-keygen -b 2048 -t rsa
הפקודה תיצור קובץ בשם id_rsa.pub ו-id_rsa (השם יכול להשתנות לבחירתכם). זה בסיומת pub הוא המפתח הציבורי (pub מלשון public).
לעתים אתם מקבלים מפתח פרטי בלבד מספק כלשהו (כמו אמזון). במקרה הזה הסיומת יכולה להיות pem שהיא סיומת כללית שמיועדת למפתחות. אפשר ליצור מפתח ציבורי מהמפתח הפרטי כמובן, אבל לא ההיפך.
חיבור עם SSH למכונה מרוחקת כמו רספברי פיי
אחרי שיש לנו את המפתח הציבורי והפרטי, אין קל מהוספת המפתח ל-SSH client שלנו כדי שנוכל להתחבר מרחוק. ראשית אנו נוסיף אותו למכונה המרוחקת באמצעות הפקודה:
ssh-copy-id -i ~/.ssh/id_rsa IP-OF-REMOTE-MACHINE
למשל:
ssh-copy-id -i ~/.ssh/id_rsa raspberrypi.local
ו… זהו. המכונה המרוחקת מוכנה
אז יש לנו מכונה מרוחקת שמוכנה לקבל את המפתח הציבורי שלנו. איך אנחנו מתחברים איתו ל-SSH? באמצעות קובץ config שנמצא בתיקית ה-ssh (בחלונות תצטרכו ליצור אותו – קובץ בשם config ללא סיומת). מדובר בקובץ טקסט שבו יש את ההגדרות של ה-SSH. נוסיף אליו הגדרה כזו:
Host raspberrypi.local
HostName raspberrypi.local
user pi
IdentityFile ~/.ssh/id_rsa
ו… זהו. נשמור ומעכשיו, כשנתחבר אל ההוסט שלנו ב-SSH, לא נצטרך להקליד ססמה בכלל. נוכל להכנס ישירות. קל ונוח 🙂 אפשר גם לחבר את ויז'ואל סטודיו קוד ולערוך קבצים ישירות על המכונה.
ניתן בשלב זה למנוע חיבור עם סיסמה ל-SSH במכונה המרוחקת כדי להגדיל את ההגנה. שימו לב שאם אתם מאבדים את המפתח – אתם אבודים. אז לשיקולכם.
חיבור עם SSH לאמזון lighstail
כאשר אנו יוצרים מכונה עם lightsail, אנו יכולים להגדיר בתהליך היצירה מפתח ציבורי או להוריד את המפתח הפרטי ישירות מאמזון. כדי להוריד את המפתח הפרטי הדיפולטיבי שלכם – אתם יכולים להכנס לדף הזה בחשבון שלכם ולראות את כל המפתחות שלכם לפי איזורים. אפשר ליצור או להוריד.
אנו נוריד את המפתח הדיפולטיבי. זה קובץ pem שהוא המפתח הפרטי הדיפולטיבי שנוצר עם המכונה. כדי להשתמש בו, אנו נעתיק אותו לתיקית ssh. התיקיה הזו נגישה בלינוקס/מק כאן:
cd ~/.ssh
ובמערכת הפעלה חלונות פה:
C:\Users\<your_username>\.ssh
זה המפתח הפרטי שלנו. הסיומת שלו היא pem. כדאי לשנות לו את ההרשאות (מק/לינוקס בלבד) באמצעות הפקודה:
chmod 400 ~/.ssh/your-key-name-eu-west-1.pem
ניתן ליצור ממנו מפתח ציבורי אגב (לצרכים אחרים) על ידי הפקודה:
ssh-keygen -y -f your-key-name-eu-west-1.pem > your-key-name-eu-west-1.pub
גם פה, אחרי שיש לנו את המפתח הפרטי, נוכל להשתמש בו בקובץ ה-config. קובץ שנמצא בתיקית ssh (אם יש לכם חלונות הוא לא יהיה שם, תצטרכו ליצור אותו – config ללא סיומת קובץ). הכניסו את הטקסט הזה – רק שנו את שם המכונה ואת שם הקובץ של המפתח הפרטי.
Host 6.38.20.20
HostName 6.38.20.20
user bitnami
IdentityFile ~/.ssh/your-key-name-eu-west-1.pem
וזהו. מהחיבור הבא לא תהיה לכם סיסמה. אפשר להסיר את האפשרות להכנס למכונה עם סיסמה.
6 תגובות
נדמה לי שצריך לציין שלמכונה המרוחקת אתה מעתיק את המפתח הציבורי, לא הפרטי.
המדריך הבא צריך להיות על איך עובדים על מכונה מרוחקת באמצעות VSCode בעריכה ושורת פקודה (מסתמך על חיבור ה-ssh אשר מוסבר כאן).
נכון!
יש אופציה להרחיב איך ניתן ליצור כזה חיבור אם יש לי Yubikey?
החל מגרסת openssh 8.2p1 זה מגיע בילטאין, אתה בוחר בסוג המפתח sk..
שלום
קודם תודה על ההדרכה, ברצוני לשאול האם אוכל דרך SSH להתחבר מרחוק למחשב שלי דרך XAMPP שהתקנתי, ולמשל לשתף חבר באתר שאני בונה בוורדפרס על המחשב שלי?