כיצד להוסיף מפתחות SSH באובונטו 20.04

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

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

ישנם שני סוגים של מנגנוני אימות המשמשים לחיבור לשרת המרוחק, אימות מבוסס סיסמה (נוטה להתקפות Brute-force) ואימות מבוסס מפתחות SSH (שהינו מאובטח מאוד).

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

במדריך זה נראה כיצד להגדיר מפתחות SSH בשרת Ubuntu 20.04 LTS.

בדוק אם יש לך מפתח SSH קיים במחשב שלך

כדי לבדוק אם SSH Keypair כבר קיים במחשב שלך הקלד פקודה זו בטרמינל שלך.

ls -l ~/.ssh/id_*.pub

אם הפקודה לעיל חוזרת אין כזה קובץ או תקייה אוֹ אין תוצאות מתאימות, אז זה אומר שצמד מפתחות SSH לא קיים.

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

יצירת מפתחות SSH במחשב לקוח

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

ssh-keygen

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

ssh-keygen -b 4096

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

יצירת זוג מפתחות RSA ציבורי/פרטי. הזן את הקובץ שבו יש לשמור את המפתח (/home/harshit/.ssh/id_rsa):

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

הזן קובץ שבו יש לשמור את המפתח (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx

החלף את ה xxx בסוף שם הקובץ עם שם מתאים, כפי שמוצג להלן ולחץ להיכנס.

הזן קובץ שבו יש לשמור את המפתח (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1

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

הזן ביטוי סיסמה (ריק ללא ביטוי סיסמה): הזן שוב את אותו משפט סיסמה:

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

לאחר השלמת התהליך, ההודעה הבאה מופיעה על המסך שלך.

ssh-keygen -b 4096 לאחר השלמת כל התהליך של יצירת מפתח SSH, ההודעה הבאה מופיעה על המסך שלך.

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

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

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

שימוש בכלי השירות ssh-copy-id

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

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

ssh-copy-id username@hostname

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

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

לא ניתן לקבוע את האותנטיות של המארח '172.105.XX.XX (172.105.XX.XX)'. טביעת האצבע של מפתח ECDSA היא xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. האם אתה בטוח שברצונך להמשיך להתחבר (כן/לא)? כן

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

/usr/bin/ssh-copy-id: INFO: מנסה להיכנס עם המפתח/ים החדשים, כדי לסנן את כל המפתחות שכבר מותקנים /usr/bin/ssh-copy-id: INFO: מפתח/ים אחדים ) נותרו להתקין -- אם תתבקשו כעת, זה להתקין את המפתחות החדשים של [email protected]:

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

מספר המפתח/ים שנוספו: 1 כעת נסה להיכנס למכונה, עם: "ssh '[email protected]'" ובדוק כדי לוודא שנוספו רק המפתח/ים שרצית.

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

ssh-copy-id -i id_rsa_xxx.pub username@host

💡 טיפ

אל תשכח לשים ‎.pub בסוף שם הקובץ בזמן ההקלדה בטרמינל.

העתקת המפתח הציבורי בשיטת הצנרת

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

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

החלף שם משתמש_מרוחק ו כתובת השרת עם שם המשתמש וכתובת ה-IP שלך.

אם יש לך מספר מפתחות SSH זמינים במחשב שלך, החלף את id_rsa.pub עם קובץ מפתח SSH הציבורי לבחירתך. לדוגמה, id_rsa_client_1.pub.

הקלד את סיסמת המשתמש המרוחק כאשר תתבקש ולחץ להיכנס.

הסיסמה של [email protected]:

לאחר הקלדת הסיסמה, ה- id_rsa.pub הקובץ יועתק ל- מפתחות_מורשה קובץ של השרת המרוחק.

העתקה ידנית של המפתח הציבורי

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

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

cat ~/.ssh/id_rsa.pub

תוכן הקובץ ייראה, כפי שמוצג להלן.

ssh-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name @ your_PC

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

echo above_string >> ~/.ssh/authorized_keys

הגדרת מספר מפתחות SSH (אופציונלי)

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

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

cd ~/.ssh vim config

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

מארח מרוחק-ubuntu-server שם מארח 172.105.XX.XX User root IdentityFile ~/.ssh/id_rsa_client_1 מארח מרחוק-ubuntu-server שם מארח 172.106.XX.XX User root IdentityFile ~/.ssh/id_rsa_client_2

באופן דומה, הקלד את הפרטים של שרתים מרוחקים אחרים והמפתחות שלהם. לאחר השלמת התהליך לחץ יציאה ו :wq לשמור ולצאת.

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

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

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

ssh remote_username@server_ip_address

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

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

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

השבת את מנגנון התחברות מבוסס סיסמה

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

התחבר לשרת אובונטו המרוחק שלך והקלד את הפקודה המוצגת למטה.

sudo vim /etc/ssh/sshd_config
  • ללחוץ יציאה, / והקלד 'Password Authentication' והקש להיכנס.
  • כעת לחץ אני ושנה את הערך של 'Password Authentication yes' ל'Password Authentication no'.
  • ללחוץ יציאה וחזור על התהליך שלמעלה כדי למצוא את 'ChallengeResponseAuthentication', 'UsePAM', ולשנות את הערכים שלהם ל- לא גם כן.
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no

ברגע שכל הערכים מוגדרים ל לא, ללחוץ יציאה, הקלד :wq ופגע להיכנס.

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

sudo systemctl הפעל מחדש את ssh

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

לאחר השלמת תהליך האימות, סגור את כל ההפעלות הפועלות.

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