הקדמה
SSH, או מסוף מאובטח, הוא פרוטוקול מוצפן המשמש לניהול ותקשורת עם שרתים. כשאתה עובד עם שרת של Rocky Linux, יש סיכוי גבוה שתבלה רוב הזמן שלך בהקשר של ישיבת טרמינל המחוברת לשרת שלך דרך SSH.
במדריך זה, נתמקד בהגדרת מפתחות SSH עבור שרת של Rocky Linux 9. מפתחות SSH מספקים שיטה ישירה ובטוחה להתחבר לשרת שלך ומומלץ לכל המשתמשים.
שלב 1 — יצירת זוג מפתחות RSA
השלב הראשון הוא ליצור זוג מפתחות במכשיר הלקוח (רוב הפעמים המחשב המקומי שלך):
- ssh-keygen
באופן ברירת מחדל, ssh-keygen
יצור זוג מפתחות RSA בגודל 2048 ביט, שהוא מספיק בטחוני לרוב המקרים (ניתן להעביר אופציה -b 4096
ליצירת מפתח בגודל 4096 ביט).
לאחר הזנת הפקודה, אתה אמור לראות את הערכת ההגדרות הבאה:
OutputGenerating 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)?
אם תבחר לדרוס את המפתח בדיסק, לא תוכל יותר לאמת באמצעות המפתח הקודם. היה זה תהליך הסלמה שאי אפשר לשנות אחורה. יש להיות זהיר מאוד בעת בחירת "כן", מכיוון שזהו תהליך הרסני שאין אפשרות לשחזרו.
אז תראה את הבקשה הבאה:
OutputEnter passphrase (empty for no passphrase):
כאן תוכל להזין אופציונלית פספורט בטוחה, שמומלץ מאוד. פספורט זה מוסיף שכבת אבטחה נוספת למפתח שלך, כדי למנוע משתמשים לא מורשים להתחבר.
אז תראה את הפלט הבא:
OutputYour 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 באמצעות סיסמה. זהו החשבון אליו יועתק המפתח הציבורי שלך:
- ssh-copy-id username@remote_host
יתכן שתראה את ההודעה הבאה:
OutputThe 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
בחשבון המרוחק.
תראה את הפלט הבא:
OutputNumber 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
בתוך תיקייה זו. נשתמש בסימן ההפניה >>
כדי להוסיף את התוכן במקום למחוק אותו. זה יאפשר לנו להוסיף מפתחות בלעדיים מבלי להשמיד מפתחות שנוספו קודם לכן.
הפקודה המלאה נראית כך:
- cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
עשוי להופיע לך הודעה כזו:
OutputThe 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
כדי להמשיך.
לאחר מכן, יתבקש ממך להזין את סיסמת חשבון המשתמש המרוחק:
Outputusername@203.0.113.1's password:
לאחר הזנת הסיסמה שלך, תוכן המפתח שלך בשם id_rsa.pub
יועתק לסוף קובץ ה- authorized_keys
של חשבון המשתמש המרוחק. יש להמשיך לשלב שלב 3 אם הצלחת.
העתקת מפתח ציבורי באופן ידני
אם אין לך גישת SSH המבוססת על סיסמה לשרת שלך, יהיה עליך להשלים את התהליך לעיל באופן ידני.
נוסיף באופן ידני את תוכן קובץ ה- id_rsa.pub
שלך לקובץ ~/.ssh/authorized_keys
במכונה המרוחקת שלך.
כדי להציג את תוכן המפתח שלך id_rsa.pub
, הקלד את זה במחשב המקומי שלך:
- cat ~/.ssh/id_rsa.pub
תראה את תוכן המפתח, שצריך להיראות משהו כמו זה:
Outputssh-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
קיימת. פקודה זו תיצור את התיקייה אם נדרש, או תעשה כלום אם היא כבר קיימת:
- mkdir -p ~/.ssh
כעת, תוכל ליצור או לשנות את קובץ authorized_keys
בתיקייה זו. תוכל להוסיף את תוכן הקובץ id_rsa.pub
שלך לסוף קובץ authorized_keys
, וליצור אותו אם נדרש, באמצעות הפקודה הזו:
- echo public_key_string >> ~/.ssh/authorized_keys
בפקודה לעיל, תחליף את public_key_string
עם הפלט מהפקודה cat ~/.ssh/id_rsa.pub
שביצעת במערכת המקומית שלך. זה צריך להתחיל ב־ssh-rsa AAAA...
.
לבסוף, נוודא שתיקיית ~/.ssh
וקובץ authorized_keys
מקבלים את ההרשאות המתאימות:
- chmod -R go= ~/.ssh
פעולה זו מסירה באופן רקורסיבי את כל ההרשאות של "קבוצה" ו"אחרים" עבור התיקייה ~/.ssh/
.
אם אתה משתמש בחשבון root
כדי להגדיר מפתחות עבור חשבון משתמש, חשוב גם שתיקיית ~/.ssh
שייכת למשתמש ולא ל־root
:
- chown -R sammy:sammy ~/.ssh
במדריך הזה, המשתמש שלנו נקרא sammy אך עליך להחליף את שם המשתמש המתאים בפקודה לעיל.
כעת ניתן לנסות אימות במבוסס מפתחות עם שרת Rocky Linux שלנו.
שלב 3 — כניסה לשרת Rocky Linux שלך באמצעות מפתחות SSH
אם הצלחת בהצלחה להשלים אחת מהשלבים לעיל, עליך כעת להתחבר לשרת המרוחק בלי סיסמת החשבון המרוחק.
התהליך הראשוני דומה לאימות המבוסס סיסמה:
- ssh username@remote_host
אם זה הפעם הראשונה שאתה מתחבר לשרת זה (אם השתמשת בשיטה האחרונה למעלה), עשוי להופיע משהו דומה לזה:
OutputThe 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:
- sudo vi /etc/ssh/sshd_config
בתוך הקובץ, חפש אחר הוראה בשם PasswordAuthentication
. ייתכן שהוא יהיה מפוטר עם סולמית #
. לחץ על i
כדי להכניס את מצב ההכנסה של vi
, ואז בטל את ההפעלה מהשורה וקבע את הערך ל־no
. זה ישבות את היכולת שלך להיכנס דרך SSH באמצעות סיסמת חשבון:
...
PasswordAuthentication no
...
כשתסיים לבצע שינויים, לחץ על ESC
ואז הקלד :wq
כדי לשמור את השינויים בקובץ ולצאת. כדי ליישם את השינויים אכן, עלינו לאתחל את שירות ה־sshd
:
- sudo systemctl restart sshd
כאמז precaution, פתח חלון טרמינל חדש ובדוק שהשירות של SSH פועל כראוי לפני שתסגור את ההפעלה הנוכחית:
- 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