הגדרת שרת ssh לאימות באמצעות מפתח ציבורי + סיסמה
במאבק לאבטח את המחשב הביתי שלי נלחמתי שוב בשרת ה-ssh כדי להגדיר אותו "בדיוק כמו שאני רוצה" (tm). אני מעדיף מפתח ציבורי + סיסמה, כיוון שזה מבטיח שאם אאבד את המחשב הנייד/הטלפון/מה שלא יהיה, המוצא בר-המזל לא ימצא את דרכו אל המחשב הביתי שלי.
אז, בלי הקדמות מיותרות, הנה הפרטים השונים שיש לבצע.
הגדרת שרת ה-ssh
ערכו את /etc/ssh/sshd_config והשתמשו בערכים הבאים:
Protocol 2 # protocol 1 is outdated
PubkeyAuthentication yes # I want public key to be used for authentication (and possibly to be combined with a pass phrase)
וכמובן, יש חבורה שלמה של פרוטוקולי אימות שאינם נחוצים: ChallengeResponseAuthentication no KerberosAuthentication no GSSAPIAuthentication no PasswordAuthentication no UsePAM no
יצירת המפתחות
עדיין בשרת, בתיקיית הבית של המשתמש שאיתו אתם רוצים להתחבר מרחוק, צרו את זוג המפתחות הפרטי/ציבורי באמצעות ssh-keygen -t dsa בתוך ~/.ssh (מיקום ברירת המחדל של ssh-keygen). אתם מקבלים שני קבצים: id_dsa (מפתח פרטי) ו-id_dsa.pub (מפתח ציבורי).
בפוסט הזה השתמשתי במפתחות dsa, ואתם יכולים להשתמש במפתחות rsa אם תעבירו -t rsa ל-ssh-keygen.
באותה תיקייה בשרת צרו קובץ בשם authorized_keys שמכיל את המפתח הציבורי (הוא יכול פשוט להיות עותק של id_dsa.pub, אך יש לו פוטנציאל להכיל מפתחות רבים — אולי אחד לכל משתמש שיכול להתחבר לחשבון הזה, או אחד לכל מכשיר נייד).
בעת יצירת זוג המפתחות תתבקשו להזין משפט סיסמה. זו הנקודה שבה אתם בוחרים האם תזדקקו למשפט סיסמה (המתפקד כסיסמה) כדי לגשת לחשבון הזה. אם תשאירו את משפט הסיסמה ריק, אתם מאפשרים גישה באמצעות מפתח בלבד ללא סיסמה, וזה מסוכן — כי אם מישהו ישים את ידו על המכשיר הנייד שלכם, הוא יוכל לגשת לחשבונכם ללא כל נתון נוסף.
הפצת המפתחות
העתיקו את המפתח הפרטי ~/.ssh/id_dsa למכשירים הניידים שמהם אתם רוצים לגשת לשרת (מחשב נייד, טלפון, מה שלא יהיה). אם המכשיר הנייד הוא מכונת לינוקס, שימו את המפתח הפרטי באותו מיקום (~/.ssh/id_dsa) בתיקיית הבית של המשתמש שרוצה לגשת לשרת. אם אתם משתמשים בכלי ssl אחר כלשהו מלבד ssh משורת הפקודה במכונת לינוקס כדי לגשת לשרת, אמור להיות בו מקום שאליו מחברים את המפתח הפרטי. אם אין בו מקום כזה — זרקו אותו. ל-Putty (לקוח ssh נפוץ בחלונות) יש אפשרות להשתמש במפתח פרטי לצורך התחברות.
הערה:
בעת ניסיון הדבר, נראה שאנשים רבים נכשלים משום שהם עושים את כל הניסויים בשולחן עבודה גרפי. בשולחן עבודה קיימת מערכת בשם ssh-agent שמבצעת עבורכם את האימות כדי לחסוך מכם הקלדה של אותה סיסמה פעמים רבות. הסוכן הזה הוא בעיה בעת ניסויים, כי צריך להודיע לו שהחלפתם מפתחות. לכן, בכל פעם שאתם מחליפים מפתחות (מייצרים מחדש את הקבצים ~/.ssh/{id_dsa,id_dsa.pub}) עליכם להריץ ssh-add כדי ליידע את הסוכן. אפשרות אחרת היא לא לבצע את כל הניסויים משולחן העבודה הגרפי, אלא ממעטפת התחברות טקסטואלית (Ctrl+Alt+1 או כל דבר דומה) כך שהסוכן לא ייכנס לתמונה (שמסובכת מספיק גם בלעדיו). רק לאחר שהכול מוגדר, התחברו מחדש לשולחן העבודה הגרפי ונסו הכול.