הגדר התחברות מאובטחת ללא סיסמה לשרת אובונטו המרוחק שלך באמצעות מפתחות 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 נוצרו במערכת שלך. עכשיו הגיע הזמן להעתיק את המפתח הציבורי בשרת המרוחק.
העתקת המפתח הציבורי לשרת אובונטו מרוחק
השיטה הקלה והמהירה ביותר להעתיק את המפתח הציבורי לשרת המרוחק היא באמצעות 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 שלנו. כעת אף אחד לא יכול להיכנס לשרת שלך באמצעות מנגנון התחברות מבוסס סיסמה.