למד את הפרטים ולצאת מ- OpenSSH במחשב ה- Linux שלך
אנחנו eolleded המעלות של SSH פעמים רבות, הן אבטחה גישה מרחוק. בואו נסתכל על השרת עצמו, כמה היבטים חשובים "תחזוקה", וכמה quirks שיכולים להוסיף מערבולת נסיעה אחרת חלקה.
בזמן שכתבנו את המדריך הזה עם לינוקס בראש, זה יכול לחול גם על OpenSSH ב- Mac OS X ו- Windows 7 דרך Cygwin.
למה זה בטוח
הזכרנו פעמים רבות כיצד SSH הוא דרך מצוינת להתחבר בצורה מאובטחת לנתב נתונים מנקודה אחת לאחרת. בואו ניקח מבט קצר מאוד על איך לעבוד דברים אז אתה מקבל מושג טוב יותר למה דברים יכולים ללכת מוזר לפעמים.
כאשר אנו מחליטים ליזום חיבור למחשב אחר, אנו משתמשים לעתים קרובות בפרוטוקולים שקל לעבוד איתם. Telnet ו- FTP הן לעלות על הדעת. אנו שולחים מידע לשרת מרוחק ולאחר מכן אנו מקבלים אישור בחזרה על הקשר שלנו. על מנת להקים סוג כלשהו של בטיחות, פרוטוקולים אלה משתמשים בשילובים של שם משתמש וסיסמה. זה אומר שהם בטוחים לגמרי, נכון? שגוי!
אם אנחנו חושבים על תהליך החיבור שלנו בדואר, אז באמצעות FTP ו- Telnet וכדומה היא לא כמו באמצעות מעטפות דואר רגיל. זה יותר כמו באמצעות גלויות. אם מישהו קורה לשלב באמצע, הוא יכול לראות את כל המידע, כולל הכתובות של שני הכתבים ואת שם המשתמש והסיסמה שנשלחו. לאחר מכן הם יכולים לשנות את ההודעה, לשמור את המידע זהה, ולהתחזות אחד כתב או אחר. תופעה זו ידועה כ"התקפה של אדם באמצע ", ולא רק שהיא מתפשרת על החשבון שלך, אלא היא מעמידה בסימן שאלה את כל ההודעות שנשלחו ואת הקובץ שהתקבל. אתה לא יכול להיות בטוח אם אתה מדבר עם השולח או לא, וגם אם אתה, אתה לא יכול להיות בטוח שאף אחד לא מסתכל על כל דבר בין לבין.
עכשיו, בואו נסתכל על הצפנת SSL, מהסוג שהופך את HTTP למאובטח יותר. הנה, יש לנו סניף הדואר המטפל התכתבות, מי בודק אם הנמען שלך הוא מי הוא או היא טוענת להיות, ויש חוקים המגנים על הדואר שלך מלהסתכל. זה בטוח יותר באופן כללי, והרשות המרכזית - Verisign היא אחת, לדוגמה HTTPS שלנו - מוודאת שהאדם שאתה שולח דואר יבדוק. הם עושים זאת בכך שאינם מאפשרים גלויות (אישורים לא מוצפנים); במקום להפקיד מעטפות אמיתיות.
לבסוף, בואו נסתכל על SSH. כאן, ההתקנה היא קצת שונה. אין לנו כאן מאמת מרכזי, אבל הדברים עדיין בטוחים. זה בגלל שאתה שולח מכתבים למישהו שאת הכתובת שלך אתה כבר יודע - אומר, על ידי מפטפטים איתם בטלפון - ואתה משתמש במתמטיקה מהודרת באמת לחתום על המעטפה שלך. אתה מוסר את זה לאחיך, לחברה שלך, לאבא שלך או לבתך כדי לקחת אותו לכתובת, ורק אם ההתאמות המתמטיות של הנמען, אתה מניח שהכתובת היא מה שהיא צריכה להיות. ואז, אתה מקבל מכתב בחזרה, גם מוגן מפני עיניים חטטניות על ידי מתמטיקה זה מדהים. לבסוף, אתה שולח את האישורים שלך במעטפה חשאית נוספת אלגוריתמית קסום אל היעד. אם המתמטיקה אינה תואמת, אנו יכולים להניח שהמקבל המקורי עבר ואנו צריכים לאשר את הכתובת שלהם שוב.
עם ההסבר כל עוד הוא, אנחנו חושבים שנחתוך אותו שם. אם יש לך עוד תובנה, אל תהסס לצ 'אט הערות, כמובן. לעת עתה, עם זאת, בואו נסתכל על המאפיין הרלוונטי ביותר של SSH, אימות המארח.
מקשים מארחים
אימות המארח הוא בעצם החלק שבו מישהו שאתה סומך לוקח את המעטפה (חתום עם מתמטיקה קסם) ומאשר את הכתובת של הנמען שלך. זה תיאור מפורט למדי של הכתובת, וזה מבוסס על כמה מתמטיקה מסובכת שאנחנו פשוט לדלג מעל. יש כמה דברים חשובים כדי לקחת את זה, אם כי:
- כיוון שאין סמכות מרכזית, הביטחון האמיתי טמון במפתח המארח, במפתחות הציבור ובמפתחות הפרטיים. (שני המקשים האחרונים מוגדרים כאשר ניתנת לך גישה למערכת).
- בדרך כלל, כאשר אתה מתחבר למחשב אחר באמצעות SSH, המפתח המארח מאוחסן. זה עושה פעולות עתידיות מהר יותר (או פחות verbose).
- אם המפתח המארח משתנה, סביר להניח שאתה התראה ואתה צריך להיות זהיר!
מאז המפתח המארח משמש לפני אימות כדי לקבוע את הזהות של שרת SSH, אתה צריך להיות בטוח לבדוק את המפתח לפני שאתה מתחבר. תראה תיבת דו-שיח לאישור כמו בהמשך.
אבל אתה לא צריך לדאוג! לעתים קרובות, כאשר אבטחה היא דאגה, לא יהיה מקום מיוחד כי המפתח המארח (טביעת אצבע ECDSA לעיל) ניתן לאשר. במיזמים מקוונים לחלוטין, לעתים קרובות זה יהיה באתר מאובטח להתחבר בלבד. ייתכן שיהיה עליך (או לבחור!) לטלפן למחלקת ה- IT שלך כדי לאשר את המפתח בטלפון. אני כבר שמעתי על כמה מקומות שבהם המפתח הוא על תג העבודה שלך או על מיוחד "מספרי חירום" רשימה. בנוסף, אם יש לך גישה פיזית למכשיר היעד, אתה יכול גם לבדוק בעצמך!
בדיקת מפתח המארח של המערכת
ישנם 4 סוגים של אלגוריתמים הצפנה המשמשים כדי להפוך את המפתחות, אבל ברירת המחדל עבור OpenSSH כמו בתחילת השנה הוא ECDSA (עם כמה סיבות טובות). נתמקד היום הזה. הנה הפקודה שתוכל להפעיל בשרת SSH שאליו יש לך גישה אל:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
הפלט שלך צריך להחזיר משהו כזה:
256 ca: 62: e: 7c: c: 4c /etc/ssh/ssh_host_ecdsa_key.pub
המספר הראשון הוא אורך הסיביות של המפתח, ואז הוא המפתח עצמו, ולבסוף יש לך את הקובץ המאוחסן בו. השווה את החלק האמצעי הזה למה שאתה רואה כשאתה מתבקש להיכנס מרחוק. זה צריך להתאים, ואתה מוכן. אם לא, אז משהו אחר יכול לקרות.
באפשרותך להציג את כל המארחים שחיברת אליהם באמצעות SSH על-ידי עיון בקובץ ה- known_hosts שלך. זה בדרך כלל ממוקם בכתובת:
~ / .ssh / known_hosts
אתה יכול לפתוח את זה בכל עורך טקסט. אם אתה מסתכל, מנסה לשים לב איך המפתחות מאוחסנים. הם מאוחסנים עם שם המחשב המארח (או כתובת האינטרנט) וכתובת ה- IP שלו.
שינוי מארח ומפתחות בעיות
ישנן מספר סיבות מדוע המקשים המארחים משתנים או שאינם תואמים את מה שנרשם בקובץ known_hosts שלך.
- המערכת הותקנה מחדש / הוגדרה מחדש.
- המקשים המארחים שונו באופן ידני עקב פרוטוקולי אבטחה.
- שרת OpenSSH עודכן והוא משתמש בתקנים שונים עקב בעיות אבטחה.
- החוזה של ה- IP או ה- DNS השתנה. זה בדרך כלל אומר שאתה מנסה לגשת למחשב אחר.
- המערכת נפגעה באופן כלשהו כך שהמפתח המארח השתנה.
סביר להניח, הנושא הוא אחד משלושת הראשונים, ואתה יכול להתעלם מן השינוי. אם החכירה IP / DNS השתנתה, ייתכן שיש בעיה עם השרת ואתה יכול להיות מנותב למכונה אחרת. אם אתה לא בטוח מה הסיבה לשינוי הוא אז אתה כנראה צריך להניח שזה האחרון ברשימה.
כיצד OpenSSH מטפל מארחים לא ידועים
OpenSSH יש הגדרה איך זה מטפל המארחים לא ידוע, המשתקף המשתנה "StrictHostKeyChecking" (ללא מרכאות).
בהתאם לתצורה, חיבורי SSH עם מארחים לא ידועים (שמפתחותיהם כבר אינם בקובץ ה- known_hosts) יכולים לעבור בשלוש דרכים.
- StrictHostKeyChecking מוגדר לא; OpenSSH יתחבר באופן אוטומטי לכל שרת SSH ללא קשר למצב מפתח המארח. זה לא מאובטח ולא מומלץ, אלא אם אתה מוסיף חבורה של המארחים לאחר התקנה מחדש של מערכת ההפעלה שלך, ולאחר מכן תוכל לשנות את זה בחזרה.
- StrictHostKeyChecking מוגדר לשאול; OpenSSH יראה לך מקשים חדשים לארח ולבקש אישור לפני הוספת אותם. זה ימנע חיבורים מ הולך לשנות את המפתחות המארח. זוהי ברירת המחדל.
- StrictHostKeyChecking מוגדר כן; ההפך מ "לא", זה ימנע ממך להתחבר לכל המארח כי הוא כבר לא נמצא בקובץ known_hosts שלך.
ניתן לשנות משתנה זה בקלות בשורת הפקודה באמצעות הפרדיגמה הבאה:
ssh-o 'StrictHostKeyChecking [אפשרות]' משתמש @ מארח
החלף [אפשרות] עם "לא", "שאל", או "כן". להיות מודעים לכך יש ציטוטים ישר אחד סביב המשתנה הזה ההגדרה שלה. כמו כן, החלף את המשתמש @ host עם שם המשתמש ושם המארח של השרת שאליו אתה מתחבר. לדוגמה:
ssh -o 'StrictHostKeyChecking שאל' [email protected]
מארחים חסומים עקב שינוי מפתחות
אם יש לך שרת שאתה מנסה לגשת אליו היה המפתח שלה כבר השתנה, תצורת OpenSSH ברירת המחדל תמנע ממך לגשת אליו. אתה יכול לשנות את הערך StrictHostKeyChecking עבור המארח, אבל זה לא יהיה לגמרי, ביסודיות, בטוח פרנואידלי, האם זה היה? במקום זאת, אנו יכולים פשוט להסיר את הערך הפוגע מקובץ known_hosts שלנו.
זה בהחלט דבר מכוער שיש על המסך שלך. למרבה המזל, הסיבה שלנו היתה מערכת הפעלה מחדש. אז, בואו זום על הקו שאנחנו צריכים.
הנה. ראה כיצד הוא מצטט את הקובץ שאנו צריכים לערוך? זה אפילו נותן לנו את מספר הקו! אז בואו נפתח את הקובץ בנאנו:
הנה המפתח הפוגע שלנו, בשורה 1. כל מה שאנחנו צריכים לעשות הוא להכות Ctrl + K לחתוך את כל הקו.
זה הרבה יותר טוב! אז, עכשיו פגענו Ctrl + O לכתוב (לשמור) את הקובץ, ואז Ctrl + X כדי לצאת.
עכשיו אנחנו מקבלים הנחיה נחמד במקום, שבו אנחנו יכולים פשוט להגיב עם "כן".
יצירת מפתחות מארח חדשים
עבור הרשומה, יש באמת לא יותר מדי סיבה בשבילך לשנות את המפתח המארח בכלל, אבל אם אי פעם למצוא את הצורך, אתה יכול לעשות בקלות.
ראשית, שינוי לספריית המערכת המתאימה:
cd / etc / ssh /
זה בדרך כלל שבו המפתחות המארח העולמי הם, אם כי כמה distros יש להם להציב במקום אחר. במקרה של ספק בדוק את התיעוד!
לאחר מכן, נמחק את כל המפתחות הישנים.
sudo rm / etc / ssh / ssh_host_ *
לחלופין, ייתכן שתרצה להעביר אותם לספריית גיבוי בטוחה. רק מחשבה!
לאחר מכן, אנו יכולים לומר לשרת OpenSSH להגדיר מחדש את עצמו:
sudo dpkg-reconfigure OpenSsh שרת
תוצג הודעה בזמן שהמחשב יוצר את המפתחות החדשים שלו. טא-דה!
עכשיו שאתה יודע איך SSH עובד קצת יותר טוב, אתה אמור להיות מסוגל להוציא את עצמך מתוך כתמים קשים. "זיהוי מארח מרחוק השתנה" אזהרה / שגיאה היא משהו שזורק הרבה משתמשים מחוץ, גם אלה שמכירים את שורת הפקודה.
.