איך להגדיר מפתחות SSH ב-Rocky Linux 9

הקדמה

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

במדריך זה, נתמקד בהגדרת מפתחות SSH עבור שרת של Rocky Linux 9. מפתחות SSH מספקים שיטה ישירה ובטוחה להתחבר לשרת שלך ומומלץ לכל המשתמשים.

שלב 1 — יצירת זוג מפתחות RSA

השלב הראשון הוא ליצור זוג מפתחות במכשיר הלקוח (רוב הפעמים המחשב המקומי שלך):

  1. ssh-keygen

באופן ברירת מחדל, ssh-keygen יצור זוג מפתחות RSA בגודל 2048 ביט, שהוא מספיק בטחוני לרוב המקרים (ניתן להעביר אופציה -b 4096 ליצירת מפתח בגודל 4096 ביט).

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

Output
Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):

לחץ על ENTER כדי לשמור את זוג המפתחות בתת-תיקייה .ssh/ בתיקיית הבית שלך, או ציין נתיב אלטרנטיבי.

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

Output
/home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?

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

אז תראה את הבקשה הבאה:

Output
Enter passphrase (empty for no passphrase):

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

אז תראה את הפלט הבא:

Output
Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

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

שלב 2 — העתקת המפתח הציבורי אל שרת ה-Rocky Linux שלך

הדרך הכי מהירה להעתיק את המפתח הציבורי שלך אל השרת של Rocky Linux היא להשתמש בכלי בשם ssh-copy-id. השיטה הזו מומלצת ביותר אם היא זמינה. אם אין לך את ssh-copy-id זמין על המכשיר שלך, תוכל להשתמש באחת משתי השיטות החלופיות שיבארו לך להלן (העתקה דרך SSH עם סיסמה או העתקה ידנית של המפתח).

שימור מפתח הציבור שלך באמצעות ssh-copy-id

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

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

  1. ssh-copy-id username@remote_host

יתכן שתראה את ההודעה הבאה:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

זה אומר שהמחשב המקומי שלך לא מכיר את השרת המרוחק. זה יקרה לראשונה שתתחבר לשרת חדש. הקלד yes ולחץ ENTER כדי להמשיך.

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

Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@203.0.113.1's password:

הקלד את הסיסמה (הקלדתך לא תוצג מטעמי אבטחה) ולחץ ENTER. הכלי יתחבר לחשבון בשרת המרוחק באמצעות הסיסמה שסיפקת. לאחר מכן, הוא יעתיק את תוכן המפתח הציבורי שלך מהקובץ ~/.ssh/id_rsa.pub לקובץ ~/.ssh/authorized_keys בחשבון המרוחק.

תראה את הפלט הבא:

Output
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

בנקודה זו, המפתח שלך id_rsa.pub כבר הועלה לחשבון המרוחק. אתה יכול להמשיך לשלב ב- שלב 3.

העתקת מפתח ציבור באמצעות SSH

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

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

מצד שני, נוודא שהתיקייה ~/.ssh קיימת ויש לה הרשאות נכונות תחת החשבון שאנו משתמשים בו.

נוכל להפוך לכך שהתוכן שהעברנו ייבא לקובץ בשם authorized_keys בתוך תיקייה זו. נשתמש בסימן ההפניה >> כדי להוסיף את התוכן במקום למחוק אותו. זה יאפשר לנו להוסיף מפתחות בלעדיים מבלי להשמיד מפתחות שנוספו קודם לכן.

הפקודה המלאה נראית כך:

  1. cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

עשוי להופיע לך הודעה כזו:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

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

לאחר מכן, יתבקש ממך להזין את סיסמת חשבון המשתמש המרוחק:

Output
username@203.0.113.1's password:

לאחר הזנת הסיסמה שלך, תוכן המפתח שלך בשם id_rsa.pub יועתק לסוף קובץ ה- authorized_keys של חשבון המשתמש המרוחק. יש להמשיך לשלב שלב 3 אם הצלחת.

העתקת מפתח ציבורי באופן ידני

אם אין לך גישת SSH המבוססת על סיסמה לשרת שלך, יהיה עליך להשלים את התהליך לעיל באופן ידני.

נוסיף באופן ידני את תוכן קובץ ה- id_rsa.pub שלך לקובץ ~/.ssh/authorized_keys במכונה המרוחקת שלך.

כדי להציג את תוכן המפתח שלך id_rsa.pub, הקלד את זה במחשב המקומי שלך:

  1. cat ~/.ssh/id_rsa.pub

תראה את תוכן המפתח, שצריך להיראות משהו כמו זה:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host

התחבר למארח המרוחק שלך באמצעות השיטה שזמינה לך.

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

  1. mkdir -p ~/.ssh

כעת, תוכל ליצור או לשנות את קובץ authorized_keys בתיקייה זו. תוכל להוסיף את תוכן הקובץ id_rsa.pub שלך לסוף קובץ authorized_keys, וליצור אותו אם נדרש, באמצעות הפקודה הזו:

  1. echo public_key_string >> ~/.ssh/authorized_keys

בפקודה לעיל, תחליף את public_key_string עם הפלט מהפקודה cat ~/.ssh/id_rsa.pub שביצעת במערכת המקומית שלך. זה צריך להתחיל ב־ssh-rsa AAAA....

לבסוף, נוודא שתיקיית ~/.ssh וקובץ authorized_keys מקבלים את ההרשאות המתאימות:

  1. chmod -R go= ~/.ssh

פעולה זו מסירה באופן רקורסיבי את כל ההרשאות של "קבוצה" ו"אחרים" עבור התיקייה ~/.ssh/.

אם אתה משתמש בחשבון root כדי להגדיר מפתחות עבור חשבון משתמש, חשוב גם שתיקיית ~/.ssh שייכת למשתמש ולא ל־root:

  1. chown -R sammy:sammy ~/.ssh

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

כעת ניתן לנסות אימות במבוסס מפתחות עם שרת Rocky Linux שלנו.

שלב 3 — כניסה לשרת Rocky Linux שלך באמצעות מפתחות SSH

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

התהליך הראשוני דומה לאימות המבוסס סיסמה:

  1. ssh username@remote_host

אם זה הפעם הראשונה שאתה מתחבר לשרת זה (אם השתמשת בשיטה האחרונה למעלה), עשוי להופיע משהו דומה לזה:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

זה אומר שהמחשב המקומי שלך לא מזהה את השרת המרוחק. הקלד yes ולאחר מכן לחץ על ENTER כדי להמשיך.

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

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

שלב 4 — כיבוי אימות סיסמאות בשרת שלך

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

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

לאחר שאימתת שהחשבון המרוחק שלך יש לו הרשאות מנהל, התחבר לשרת המרוחק באמצעות מפתחות SSH, או כ root או עם חשבון עם הרשאות sudo. לאחר מכן, פתח את קובץ התצורה של דמון ה-SSH:

  1. sudo vi /etc/ssh/sshd_config

בתוך הקובץ, חפש אחר הוראה בשם PasswordAuthentication. ייתכן שהוא יהיה מפוטר עם סולמית #. לחץ על i כדי להכניס את מצב ההכנסה של vi, ואז בטל את ההפעלה מהשורה וקבע את הערך ל־no. זה ישבות את היכולת שלך להיכנס דרך SSH באמצעות סיסמת חשבון:

/etc/ssh/sshd_config
...
PasswordAuthentication no
...

כשתסיים לבצע שינויים, לחץ על ESC ואז הקלד :wq כדי לשמור את השינויים בקובץ ולצאת. כדי ליישם את השינויים אכן, עלינו לאתחל את שירות ה־sshd:

  1. sudo systemctl restart sshd

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

  1. ssh username@remote_host

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

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

סיכום

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

אם ברצונך למדע נוסף על עבודה עם SSH, ראה את מדריך הבסיסים שלנו ל-SSH.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-rocky-linux-9