כיצד להשתמש ב־SSH כדי להתחבר לשרת מרוחק

הקדמה

כלי אחד חיוני שחשוב לשלוט בו כמנהל מערכת הוא 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 זמינה בטרמינל שלך.

הצורה הכי ישירה של הפקודה היא:

  1. ssh remote_host

ה־remote_host בדוגמה זו הוא כתובת ה־IP או שם הדומיין שאתה מנסה להתחבר אליו.

הפקודה הזו מניחה כי שם המשתמש שלך במערכת המרוחקת זהה לשם המשתמש שלך במערכת המקומית שלך.

אם שם המשתמש שלך שונה במערכת המרוחקת, תוכל לציין אותו באמצעות התחביר הזה:

  1. ssh remote_username@remote_host

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

כדי לצאת מההפעלה של SSH ולחזור אל ההפעלה של השל נוכל להשתמש בפקודה הבאה:

  1. exit

כיצד עובד SSH?

SSH עובד על ידי התחברות של תוכנית לקוח לשרת SSH, הנקרא sshd.

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

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

התהליך הדרוש להתחלת שרת SSH תלוי בהפצה של Linux שבה אתם משתמשים.

ב-Ubuntu, תוכלו להתחיל את שרת ה-SSH על ידי הקלדת הפקודה הבאה:

  1. sudo systemctl start ssh

זה יפעיל את שרת ה-sshd ותוכלו להתחבר מרחוק.

כיצד להגדיר את SSH

כאשר אתם משנים את ההגדרות של SSH, אתם משנים את הגדרות של שרת ה-sshd.

ב-Ubuntu, קובץ התצורה הראשי של שרת ה-sshd נמצא בנתיב /etc/ssh/sshd_config.

שמרו גיבוי של הגרסה הנוכחית של קובץ זה לפני שתתחילו לערוך:

  1. sudo cp /etc/ssh/sshd_config{,.bak}

פתח אותו באמצעות nano או בעזרת עורך הטקסט המועדף עליך:

  1. sudo nano /etc/ssh/sshd_config

כדאי להשאיר רוב האפשרויות בקובץ זה בלתי משתנות. אך, ישנם כמה אפשרויות שאולי יהיה כדאי לבדוק:

/etc/ssh/sshd_config
Port 22

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

/etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

ההגדרות של מפתחות המארח מציינות איפה לחפש את מפתחות המארח הגלובליים. נדון במהו מפתח מארח מאוחר יותר.

/etc/ssh/sshd_config
SyslogFacility AUTH
LogLevel INFO

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

אם נתקלת בבעיות ב־SSH, הגברת רמת הלוגים עשוייה להיות דרך טובה לגלות מהו הבעיה.

/etc/ssh/sshd_config
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

פרמטרים אלו מציינים את חלק ממידע ההתחברות.

LoginGraceTime מציין כמה שניות לשמור על החיבור בלי התחברות מוצלחת.

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

PermitRootLogin בוחר האם למשתמש ה־root נתון להתחבר.

ברוב המקרים, כדאי לשנות זאת ל־no כאשר יש לך חשבון משתמש שיש לו גישה להרשאות גבוהות (דרך su או sudo) ויכול להתחבר דרך ssh, על מנת למזער את הסיכון לכל אחד להשיג גישה ראשית לשרת שלך.

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

זה מונע ניסיונות כניסה כאשר קבצי התצורה אינם מאובטחים.

/etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10

פרמטרים אלה מגדירים יכולת בשם X11 Forwarding. זה מאפשר לך לצפות בממשק המשתמש הגרפי (GUI) של מערכת מרוחקת על המערכת המקומית.

אפשרות זו חייבת להיות מופעלת על השרת ולספק עם הלקוח SSH במהלך ההתחברות עם האפשרות -X.

לאחר שביצעת את השינויים שלך, שמור וסגור את הקובץ. אם אתה משתמש ב־nano, לחץ Ctrl+X, ואז כאשר יתבקש, Y ואז Enter.

אם שינית כל הגדרות ב־/etc/ssh/sshd_config, ודא שאתה מטעין מחדש את השרת שלך כדי ליישם את השינויים שלך:

  1. sudo systemctl reload ssh

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

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

איך להיכנס ל־SSH עם מפתחות

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

כיצד פועל אימות על פי מפתח?

אימות על פי מפתח פועל על ידי יצירת זוג מפתחות: מפתח פרטי ומפתח ציבורי.

המפתח הפרטי ממוקם על המחשב הלקוח ומוגן ושמור בסוד.

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

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

מחשב הלקוח משלח את התגובה המתאימה בחזרה לשרת והשרת ידע שהלקוח הוא תקין.

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

כיצד ליצור מפתחות SSH

מפתחות SSH צריכים להיות מיוצרים על המחשב שברצונך להתחבר ממנו. זה כללית המחשב המקומי שלך.

הזן את הפקודה הבאה לשורת הפקודה:

  1. ssh-keygen -t rsa

ייתכן שיתבקש ממך להגדיר סיסמה על קבצי המפתחות עצמם, אך זהו דרך מעט נפוצה, ועליך ללחוץ Enter דרך ההוראות כדי לקבל את הברירות המחדליות. המפתחות שלך ייווצרו ב־~/.ssh/id_rsa.pub וב־~/.ssh/id_rsa.

שנה לתיקיית .ssh על ידי הקלדה:

  1. cd ~/.ssh

בדוק את ההיתרים של הקבצים:

  1. ls -l
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, מאידך, ניתן לשיתוף ויש בו היתרים המתאימים לפעולה זו.

איך להעביר את המפתח הציבורי שלך לשרת

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

  1. ssh-copy-id remote_host

זה יפתח סש סש. לאחר שתקליד את הסיסמה שלך, הוא יעתיק את המפתח הציבורי שלך לקובץ מפתחות מורשים של השרת, וזה יאפשר לך להתחבר ללא סיסמה בפעם הבאה.

אפשרויות לצד הלקוח

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

כמה מהם עשויים להיות נחוצים כדי להתאים את ההגדרות בתצורת sshd בשרת הרחוק.

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

  1. ssh -p port_number remote_host

הערה: שינוי פורט ה־SSH הוא דרך סבירה לספק אבטחה דרך העלאה בערפל. אם אתה מאפשר חיבורי SSH לשרת ידוע באופן נרחב על פורט 22 כמו נרמלי, ויש לך אימות באמצעות סיסמה מאופשר, ייתכן כי יתקפו אותך על ידי ניסיונות התחברות אוטומטיים רבים. שימוש באימות מבוסס מפתחות באופן בלעדי והפעלת SSH על פורט שאינו נרמלי אינם הפתרון לאבטחה המורכבת ביותר שתוכל להעסיק, אך צריך להפחית את ההתקפות אליהם.

אם ברצונך להריץ פקודה יחידה על מערכת רחוקה בלבד, תוכל לציין אותה לאחר המארח כך:

  1. ssh remote_host command_to_run

תתחבר למכונה הרחוקה, תאמת את הזיהוי, והפקודה תופעל.

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

  1. ssh -X remote_host

בהנחה שיש לך את הכלים המתאימים על המחשב שלך, תוכניות ממשק משתמש גרפיות שתשתמש בהן במערכת הרחוקה תפתח את חלונן על מערכת המקומית שלך.

ניטרול אימות באמצעות סיסמה

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

אזהרה: לפני שתמשיך בשלב זה, הקפד שהתקנת מפתח ציבורי לשרת שלך. אחרת, תינעל מחוץ!

כמשתמש בהרשאות root או עם הרשאות sudo, פתח את קובץ התצורה של sshd:

  1. sudo nano /etc/ssh/sshd_config

אתה יכול לאתר את השורה שמתאימה ל-Password Authentication, ולהסיר את הסימן המוביל #. תוכל לשנות את ערכו ל-no:

/etc/ssh/sshd_config
PasswordAuthentication no

עוד שני הגדרות שלא צריך לשנות (בהנחה שלא שינית את הקובץ הזה קודם) הן PubkeyAuthentication ו־ChallengeResponseAuthentication. הן מוגדרות כברירת מחדל, וצריכות להיראות כך:

/etc/ssh/sshd_config
PubkeyAuthentication yes
ChallengeResponseAuthentication no

לאחר שתבצע את השינויים שלך, שמור וסגור את הקובץ.

כעת תוכל לטעון מחדש את סנכרון ה-SSH:

  1. sudo systemctl reload ssh

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

סיכום

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

לאחר מכן, עשוי להיות לך רצון ללמוד על עבודה עם SFTP כדי לבצע העברות קבצים מממשק שורת פקודה.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server