הקדמה
כלי אחד חיוני שחשוב לשלוט בו כמנהל מערכת הוא SSH.
SSH, או Secure Shell, הוא פרוטוקול המשמש להתחברות מאובטחת למערכות מרוחקות. זהו הדרך הנפוצה ביותר לגשת לשרתי Linux מרוחקים.
במדריך זה, נדון באיך להשתמש ב־SSH כדי להתחבר למערכת מרוחקת.
הפעל אפליקציות חזיתיות מ־GitHub באמצעות פלטפורמת DigitalOcean App. תן ל־DigitalOcean להתמקד בהתרחבות האפליקציה שלך.
תחביר הליבה
כדי להתחבר למערכת מרוחקת באמצעות SSH, נשתמש בפקודת ssh
.
אם אתה משתמש ב־Windows, תצטרך להתקין גרסה של OpenSSH כדי להיות מסוגל ל־ssh מהטרמינל. אם אתה מעדיף לעבוד ב־PowerShell, תוכל לעקוב אחרי תיעוד של מיקרוסופט כדי להוסיף OpenSSH לפוֹרצֵל. אם במקום זה בחרת לקבל סביבת Linux מלאה זמינה, תוכל להגדיר WSL, תת־מערכת ההפעלה של Windows ללינוקס, אשר תכלול ssh
כברירת מחדל. לבסוף, כאפשרות שלישית קלה, תוכל להתקין Git עבור Windows, אשר מספק סביבת bash נייטיבית ל־Windows שכוללת את פקודת ssh
. כל אחת מהאפשרויות הללו נתמכת היטב ובחירתך לאיזו להשתמש תלויה בהעדפה שלך.
אם אתה משתמש ב־Mac או ב־Linux, כבר יש לך את פקודת ה־ssh
זמינה בטרמינל שלך.
הצורה הכי ישירה של הפקודה היא:
ה־remote_host
בדוגמה זו הוא כתובת ה־IP או שם הדומיין שאתה מנסה להתחבר אליו.
הפקודה הזו מניחה כי שם המשתמש שלך במערכת המרוחקת זהה לשם המשתמש שלך במערכת המקומית שלך.
אם שם המשתמש שלך שונה במערכת המרוחקת, תוכל לציין אותו באמצעות התחביר הזה:
פעם אחרי שתתחבר לשרת, עשוי לבקש ממך לאמת את הזהות שלך על ידי הזנת סיסמה. מאוחר יותר, נכסה כיצד ליצור מפתחות לשימוש במקום סיסמאות.
כדי לצאת מההפעלה של SSH ולחזור אל ההפעלה של השל נוכל להשתמש בפקודה הבאה:
כיצד עובד SSH?
SSH עובד על ידי התחברות של תוכנית לקוח לשרת SSH, הנקרא sshd
.
בסעיף הקודם, ssh
הייתה תוכנית הלקוח. השרת SSH כבר היה פועל על המארח המרוחק שציינו.
ברוב הסביבות של Linux, שרת ה- sshd
אמור להתחיל אוטומטית. אם הוא לא פועל מסיבה כלשהי, עשוי להיות עליכם לגשת באופן זמני לשרת שלכם דרך ממשק מבוסס רשת או ממשק סדרתי מקומי.
התהליך הדרוש להתחלת שרת SSH תלוי בהפצה של Linux שבה אתם משתמשים.
ב-Ubuntu, תוכלו להתחיל את שרת ה-SSH על ידי הקלדת הפקודה הבאה:
זה יפעיל את שרת ה-sshd ותוכלו להתחבר מרחוק.
כיצד להגדיר את SSH
כאשר אתם משנים את ההגדרות של SSH, אתם משנים את הגדרות של שרת ה-sshd.
ב-Ubuntu, קובץ התצורה הראשי של שרת ה-sshd נמצא בנתיב /etc/ssh/sshd_config
.
שמרו גיבוי של הגרסה הנוכחית של קובץ זה לפני שתתחילו לערוך:
פתח אותו באמצעות nano
או בעזרת עורך הטקסט המועדף עליך:
כדאי להשאיר רוב האפשרויות בקובץ זה בלתי משתנות. אך, ישנם כמה אפשרויות שאולי יהיה כדאי לבדוק:
Port 22
ההגדרה של הפורט מציינת על איזה פורט השרת sshd יאזין לחיבורים. בצורת ברירת המחדל, זהו 22
. כדאי להשאיר את ההגדרה הזו לבד, אלא אם כן יש לך סיבות מסוימות לעשות אחרת. אם תבצע שינוי בפורט, נראה לך איך להתחבר לפורט החדש מאוחר יותר.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
ההגדרות של מפתחות המארח מציינות איפה לחפש את מפתחות המארח הגלובליים. נדון במהו מפתח מארח מאוחר יותר.
SyslogFacility AUTH
LogLevel INFO
שני הפריטים הללו מציינים את רמת הלוגים שצריכה להתרחש.
אם נתקלת בבעיות ב־SSH, הגברת רמת הלוגים עשוייה להיות דרך טובה לגלות מהו הבעיה.
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
פרמטרים אלו מציינים את חלק ממידע ההתחברות.
LoginGraceTime
מציין כמה שניות לשמור על החיבור בלי התחברות מוצלחת.
ייתכן ויהיה רעיון טוב להגדיר זמן זה קצת גבוה יותר מאשר זמן ההתחברות הרגיל שלך.
PermitRootLogin
בוחר האם למשתמש ה־root נתון להתחבר.
ברוב המקרים, כדאי לשנות זאת ל־no
כאשר יש לך חשבון משתמש שיש לו גישה להרשאות גבוהות (דרך su
או sudo
) ויכול להתחבר דרך ssh, על מנת למזער את הסיכון לכל אחד להשיג גישה ראשית לשרת שלך.
strictModes
הוא שומר בטיחות המסרב לניסיון כניסה אם קבצי האימות נגישים לכולם.
זה מונע ניסיונות כניסה כאשר קבצי התצורה אינם מאובטחים.
X11Forwarding yes
X11DisplayOffset 10
פרמטרים אלה מגדירים יכולת בשם X11 Forwarding. זה מאפשר לך לצפות בממשק המשתמש הגרפי (GUI) של מערכת מרוחקת על המערכת המקומית.
אפשרות זו חייבת להיות מופעלת על השרת ולספק עם הלקוח SSH במהלך ההתחברות עם האפשרות -X
.
לאחר שביצעת את השינויים שלך, שמור וסגור את הקובץ. אם אתה משתמש ב־nano
, לחץ Ctrl+X
, ואז כאשר יתבקש, Y
ואז Enter.
אם שינית כל הגדרות ב־/etc/ssh/sshd_config
, ודא שאתה מטעין מחדש את השרת שלך כדי ליישם את השינויים שלך:
עליך לבדוק באופן מפורש את השינויים שלך כדי לוודא שהם פועלים בדרך שאתה מצפה.
זה עשוי להיות רעיון טוב לפתוח מספר ישיבות טרמינל כשאתה עושה שינויים. זה יאפשר לך להחזיר את התצורה אם יהיה צורך בכך בלי לנעול את עצמך מחוץ.
איך להיכנס ל־SSH עם מפתחות
בעוד שזה מועיל להיכנס למערכת מרוחקת באמצעות סיסמאות, זה מהיר ויותר מאובטח להגדיר אימות מבוסס מפתחות.
כיצד פועל אימות על פי מפתח?
אימות על פי מפתח פועל על ידי יצירת זוג מפתחות: מפתח פרטי ומפתח ציבורי.
המפתח הפרטי ממוקם על המחשב הלקוח ומוגן ושמור בסוד.
המפתח הציבורי יכול להינתן לכל אחד או להיות מונח על כל שרת שברצונך לגשת אליו.
כאשר אתה מנסה להתחבר באמצעות זוג מפתחות, השרת ישתמש במפתח הציבורי כדי ליצור הודעה עבור מחשב הלקוח שיכולה להיות קראה רק עם המפתח הפרטי.
מחשב הלקוח משלח את התגובה המתאימה בחזרה לשרת והשרת ידע שהלקוח הוא תקין.
תהליך זה מבוצע באופן אוטומטי לאחר שאתה מגדיר את המפתחות שלך.
כיצד ליצור מפתחות SSH
מפתחות SSH צריכים להיות מיוצרים על המחשב שברצונך להתחבר ממנו. זה כללית המחשב המקומי שלך.
הזן את הפקודה הבאה לשורת הפקודה:
ייתכן שיתבקש ממך להגדיר סיסמה על קבצי המפתחות עצמם, אך זהו דרך מעט נפוצה, ועליך ללחוץ Enter דרך ההוראות כדי לקבל את הברירות המחדליות. המפתחות שלך ייווצרו ב־~/.ssh/id_rsa.pub וב־~/.ssh/id_rsa.
שנה לתיקיית .ssh
על ידי הקלדה:
בדוק את ההיתרים של הקבצים:
Output-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa
-rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub
כפי שניתן לראות, קובץ id_rsa
קריא ונכתב רק לבעלי הקובץ. זה עוזר לשמור עליו בסודיות.
קובץ id_rsa.pub
, מאידך, ניתן לשיתוף ויש בו היתרים המתאימים לפעולה זו.
איך להעביר את המפתח הציבורי שלך לשרת
אם יש לך כרגע גישה באמצעות סיסמה לשרת, תוכל להעתיק את המפתח הציבורי שלך אליו באמצעות הפקודה הבאה:
זה יפתח סש סש. לאחר שתקליד את הסיסמה שלך, הוא יעתיק את המפתח הציבורי שלך לקובץ מפתחות מורשים של השרת, וזה יאפשר לך להתחבר ללא סיסמה בפעם הבאה.
אפשרויות לצד הלקוח
ישנן מספר אפשרויות אופציונליות שאפשר לספק בעת התחברות דרך סש.
כמה מהם עשויים להיות נחוצים כדי להתאים את ההגדרות בתצורת sshd
בשרת הרחוק.
לדוגמה, אם שינית את מספר פתח הכניסה בתצורת ה־sshd
שלך, תצטרך להתאים את הפתח הזה בצד הלקוח על ידי קלידה:
הערה: שינוי פורט ה־SSH הוא דרך סבירה לספק אבטחה דרך העלאה בערפל. אם אתה מאפשר חיבורי SSH לשרת ידוע באופן נרחב על פורט 22 כמו נרמלי, ויש לך אימות באמצעות סיסמה מאופשר, ייתכן כי יתקפו אותך על ידי ניסיונות התחברות אוטומטיים רבים. שימוש באימות מבוסס מפתחות באופן בלעדי והפעלת SSH על פורט שאינו נרמלי אינם הפתרון לאבטחה המורכבת ביותר שתוכל להעסיק, אך צריך להפחית את ההתקפות אליהם.
אם ברצונך להריץ פקודה יחידה על מערכת רחוקה בלבד, תוכל לציין אותה לאחר המארח כך:
תתחבר למכונה הרחוקה, תאמת את הזיהוי, והפקודה תופעל.
כמו שאמרנו לפני כן, אם העברת X11 מופעל בשני המחשבים, תוכל לגשת לפונקציונליות זו על ידי הקלדה:
בהנחה שיש לך את הכלים המתאימים על המחשב שלך, תוכניות ממשק משתמש גרפיות שתשתמש בהן במערכת הרחוקה תפתח את חלונן על מערכת המקומית שלך.
ניטרול אימות באמצעות סיסמה
אם יש לך מפתחות SSH שנוצרו, תוכל לשפר את אבטחת השרת על ידי השבתת האימות באמצעות סיסמה בלבד. למעט המקלדת, הדרך היחידה להתחבר לשרת שלך תהיה דרך המפתח הפרטי שמתאים למפתח הציבורי שהתקנת על השרת.
אזהרה: לפני שתמשיך בשלב זה, הקפד שהתקנת מפתח ציבורי לשרת שלך. אחרת, תינעל מחוץ!
כמשתמש בהרשאות root או עם הרשאות sudo, פתח את קובץ התצורה של sshd
:
אתה יכול לאתר את השורה שמתאימה ל-Password Authentication
, ולהסיר את הסימן המוביל #
. תוכל לשנות את ערכו ל-no
:
PasswordAuthentication no
עוד שני הגדרות שלא צריך לשנות (בהנחה שלא שינית את הקובץ הזה קודם) הן PubkeyAuthentication
ו־ChallengeResponseAuthentication
. הן מוגדרות כברירת מחדל, וצריכות להיראות כך:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
לאחר שתבצע את השינויים שלך, שמור וסגור את הקובץ.
כעת תוכל לטעון מחדש את סנכרון ה-SSH:
האימות באמצעות סיסמה כעת אמור להיות מושבת, והשרת שלך אמור להיות נגיש רק דרך אימות מפתחות SSH.
סיכום
למידת הדרך שלך סביב SSH תיעיל באופן משמעותי את המאמצים שלך בחישוב ענן בעתיד. בעודך משתמש באפשרויות השונות, תגלה יכולות מתקדמות נוספות שיכולות לשפר את חיי היומיום שלך. SSH נשאר פופולרי מאז ומתמיד בגלל שהוא מאובטח, קל משקל ושימושי במגוון מצבים.
לאחר מכן, עשוי להיות לך רצון ללמוד על עבודה עם SFTP כדי לבצע העברות קבצים מממשק שורת פקודה.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server