הקדמה
SSH, או מזוהה מאובטח, הוא פרוטוקול מוצפן המשמש לניהול ותקשורת עם שרתים. בעת עבודה עם שרת Debian, ישנה סיכוי שתבל spend את רוב זמנך בהתחברות למופע מסוף המחובר לשרת שלך דרך SSH.
במדריך זה, נתמקד בהגדרת מפתחות SSH עבור התקנת Debian 11 גריזה. מפתחות SSH מספקים דרך קלה ובטוחה להתחברות לשרת שלך ומומלץ לכל המשתמשים.
שלב 1 — צור זוג מפתחות RSA
השלב הראשון הוא ליצור זוג מפתחות במכונת הלקוח (רגיל זהו המחשב שלך):
בברירת המחדל ssh-keygen
ייצור זוג מפתחות RSA באורך של 3072 ביט, שהוא מספיק בטוח עבור רוב המקרים (ניתן להעביר את הדגל -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):
כאן ניתן להזין סיסמה מאובטחת באופן אופציונלי, מה שמומלץ ביותר. סיסמה מוסיפה שכבת אבטחה נוספת כדי למנוע משתמשים לא מורשים מהתחברות. כדי ללמוד עוד אודות אבטחה, ראו/ראי את המדריך שלנו על איך להגדיר אימות בעזרת מפתח SSH בשרת Linux.
תראו/י כעת את הפלט הבא:
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:
SHA256:5E2BtTN9FHPBNoRXAB/EdjtHNYOHzTBzG5qUv7S3hyM root@debian-suricata
The key's randomart image is:
+---[RSA 3072]----+
| oo .O^XB|
| . +.BO%B|
| . = .+B+o|
| o o o . =.|
| S . . =|
| o.|
| .o|
| E o..|
| . ..|
+----[SHA256]-----+
יש לכם/ן כעת מפתח ציבורי ומפתח פרטי שניתן להשתמש בהם לאימות. השלב הבא הוא למקם את המפתח הציבורי על השרת שלך כדי שתוכל/י להשתמש באימות על פי מפתח SSH כדי להתחבר.
שלב 2 — העתקת המפתח הציבורי לשרת Debian
הדרך המהירה ביותר להעתיק את המפתח הציבורי שלך למארח Debian היא להשתמש בתוכנית הנקראת ssh-copy-id
. עקב פשטותה, השיטה הזו מומלצת ביותר אם היא זמינה. אם אין לך/ך גישה ל-ssh-copy-id
במכשיר הלקוח שלך, תוכל/י להשתמש באחת משתי השיטות החלופיות הניתנות בסעיף זה (העתקה באמצעות SSH בהתבסס על סיסמה או העתקה ידנית של המפתח).
העתקת מפתח ציבורי באמצעות ssh-copy-id
כלי ה־ssh-copy-id
כלול כברירת מחדל במספר מערכות הפעלה רבות, ולכן ייתכן ותהיה לך אותו זמין במערכת המקומית שלך. כדי שהשיטה תעבוד, עליך לכבר תקיפת סיסמה באמצעות SSH לשרת שלך.
כדי להשתמש בכלי זה, עליך פשוט לציין את המארח המרוחק שברצונך להתחבר אליו ואת חשבון המשתמש שיש לך גישה באמצעות SSH עם סיסמה. זהו החשבון אליו יועתק מפתח ה־SSH הציבורי שלך.
התחביר הוא:
יתכן שתראה את ההודעה הבאה:
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
זה אומר שהמחשב המקומי שלך לא מזהה את המארח המרוחק. זה יקרה בפעם הראשונה שתתחבר למארח חדש. הקלד "כן" ולחץ 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
בתוך תיקייה זו. נשתמש בסמל ההפניה >>
כדי להוסיף את התוכן במקום לדרוס אותו. זה יאפשר לנו להוסיף מפתחות מבלי להרוס מפתחות שנוספו קודם.
הפקודה המלאה נראית כך:
אתה עשוי לראות את ההודעה הבאה:
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
זה אומר שהמחשב המקומי שלך לא מזהה את המארח המרוחק. זה יקרה בפעם הראשונה שתתחבר למארח חדש. הקלד "כן" ולחץ על ENTER
כדי להמשיך.
אחרי כן, תתבקש להזין את סיסמת חשבון המשתמש המרוחק:
Outputusername@203.0.113.1's password:
לאחר הזנת הסיסמה שלך, תוכן המפתח id_rsa.pub
שלך יועתק לסוף קובץ authorized_keys
של חשבון המשתמש המרוחק. המשך לשלב שלב 3 אם הצליחת.
העתקת המפתח הציבורי באופן ידני
אם אין לך גישת SSH בעזרת סיסמה לשרת שלך, עליך להשלים את התהליך לעיל באופן ידני.
נדביק באופן ידני את תוכן קובץ id_rsa.pub
שלך לקובץ ~/.ssh/authorized_keys
במכונה המרוחקת שלך.
כדי להציג את תוכן המפתח id_rsa.pub
שלך, הקלד את זה במחשב המקומי שלך:
תראה את תוכן המפתח, שצריך להיראות משהו כמו זה:
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDgkLJ8d2gGEJCN7xdyVaDqk8qgeZqQ0MlfoPK3TzWI5dkG0WiZ16jrkiW/h6lhO9K1w89VDMnmNN9ULOWHrZMNs//Qyv/oN+FLIgK2CkKXRxTmbh/ZGnqOm3Zo2eU+QAmjb8hSsstQ3DiuGu8tbiWmsa3k3jKbWNWpXqY3Q88t+bM1DZrHwYzaIZ1BSA1ghqHCvIZqeP9IUL2l2DUfSCT9LXJEgMQhgjakJnzEGPgd5VHMR32rVrbIbbDzlyyoZ7SpCe5y0vYvbV2JKWI/8SEOmwehEHJ9RBZmciwc+1sdEcAJVMDujb9p5rX4hyvFpG0KGhZesB+/s7PdOa8zlIg4TZhXUHl4t1jpPC83Y9KEwS/Ni4dhaxlnr3T6l5hUX2cD+eWl1vVpogBqKNGBMrVR4dWs3Z4BVUf9exqTRRYOfgo0UckULqW5pmLW07JUuGo1kpFAxpDBPFWoPsg08CGRdEUS7ScRnMK1KdcH54kUZr0O88SZOsv9Zily/A5GyNM= demo@test
גישה למארח המרוחק באמצעות אופן ההתחברות שזמין לך.
לאחר שיש לך גישה לחשבון שלך בשרת המרוחק, עליך לוודא שהתיקייה ~/.ssh
קיימת. פקודה זו תיצור את התיקייה אם היא נדרשת, או תעשה רק דבר אם היא כבר קיימת:
עכשיו, ניתן ליצור או לשנות את קובץ authorized_keys
בתיקייה זו. ניתן להוסיף את תוכן הקובץ id_rsa.pub
שלך לסוף קובץ authorized_keys
, וליצור אותו אם נדרש, באמצעות הפקודה הבאה:
בפקודה לעיל, החלף את public_key_string
עם הפלט מהפקודה cat ~/.ssh/id_rsa.pub
שהרצת על המערכת המקומית שלך. זה צריך להתחיל עם ssh-rsa AAAA...
.
לבסוף, נוודא כי לתיקיית ~/.ssh
ולקובץ authorized_keys
יש את ההרשאות המתאימות:
זה מסיר רקורסיבית את כל ההרשאות "קבוצה" ו"אחר" עבור התיקייה ~/.ssh/
.
אם אתה משתמש בחשבון root
כדי להגדיר מפתחות עבור חשבון משתמש, חשוב גם שהתיקייה ~/.ssh
שייכת למשתמש ולא ל-root
:
במדריך זה המשתמש שלנו נקרא sammy אך עליך להחליף את שם המשתמש המתאים לפקודה לעיל.
עכשיו תוכל לנסות אימות ללא סיסמה עם השרת שלך ב-Debian.
שלב 3 — אימות לשרת Debian באמצעות מפתחות SSH
אם השלמת אחת מהשלבים למעלה בהצלחה, אתה צריך להיכנס לשרת מרחוק בלי הסיסמה של חשבון המרחוק.
התהליך הכללי זהה:
אם זה הפעם הראשונה שאתה מתחבר לשרת זה (אם השתמשת בשיטה האחרונה למעלה), עשוי להופיע משהו דומה לזה:
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
כדי להמשיך.
אם לא הזנת קוד סודי עבור המפתח הפרטי שלך, תוכל להיכנס מיידית. אם הזנת קוד סודי עבור המפתח הפרטי כאשר יצרת אותו, יידרש ממך להזין אותו עכשיו (שים לב שההקלדה שלך לא תוצג במהלך הסשן במסוף מטעמי אבטחה). לאחר האימות, ישוב סש חדש ייפתח עבורך עם החשבון המוגדר על השרת Debian.
אם אימות על בסיס מפתח ההצפנה היה מוצלח, המשך ללמוד כיצד לאבטח את המערכת שלך נוסף על ידי ביטול אימות באמצעות סיסמה.
שלב 4 — ביטול אימות באמצעות סיסמה בשרת שלך
אם הצלחת להיכנס לחשבונך באמצעות SSH בלי סיסמה, הגדרת בהצלחה את אימות מבוסס מפתח SSH לחשבונך. עם זאת, המנגנון שלך לאימות באמצעות סיסמה עדיין פעיל, המשמעות היא שהשרת שלך עדיין חשוף להתקפות ברוטפורס.
לפני שתסיים את השלבים בסעיף זה, וודא כי יש לך הגדרת אימות מבוססת מפתחות SSH עבור חשבון השורש בשרת זה, או מועדף, שיש לך הגדרת אימות מבוססת מפתחות SSH עבור חשבון לא משורש בשרת זה עם הרשאות sudo
. בשלב זה נסגר את הכניסות עם סיסמאות, לכן וודא כי תהיה לך עדיין גישה מנהלית.
לאחר שאימתת שיש לחשבון המרוחק הרשאות מנהל, התחבר לשרת המרוחק באמצעות מפתחות SSH, באמצעות חשבון ראשי או עם חשבון עם הרשאות sudo
. לאחר מכן, פתח את קובץ התצורה של שירות ה־SSH:
בתוך הקובץ, חפש אחר הוראה בשם PasswordAuthentication
. ייתכן והוא יהיה מפוטר. בטל את ההערה מהשורה והגדר את הערך ל"no". זה ינטרל את האפשרות שלך להתחבר באמצעות סיסמאות לחשבון SSH:
...
PasswordAuthentication no
...
שמור וסגור את הקובץ כאשר תסיים, על ידי הקשה על CTRL
+ X
, לאישור השמירה על הקובץ, ולבסוף ENTER
לצאת מ־nano. כדי ליישם את השינויים בפועל, אנו צריכים לאתחל את שירות ה־sshd
:
כאמצעי זהירות, פתח חלון טרמינל חדש ובדוק שהשירות SSH פועל כראוי לפני שתסגור את ההפעלה הזו:
לאחר אימות השירות SSH שלך, תוכל לסגור בטוח את כל ההפעלות הנוכחיות של השרת.
שירות ה־SSH בשרת ה־Debian שלך כעת מגיב רק למפתחות SSH. אימות מבוסס סיסמה כעת מושבת בהצלחה.
סיכום
עכשיו אמורה להיות לך הגדרת אימות על בסיס מפתח SSH בשרת שלך, מאפשרת לך להיכנס בלי לספק סיסמת חשבון.
אם ברצונך ללמוד עוד על עבודה עם SSH, תסתכל על מדריך היסודות של SSH שלנו.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-debian-11