הפעלה אוטומטית סקריפטים מעל SSH
הראינו לך כיצד להשתמש ב- SSH להעברת קבצים באופן מאובטח. אבל יש בעיה רצינית עם התנהגות ברירת המחדל של SSH. אתה מחובר רק למכשיר המרוחק לאחר שהזנת ידנית את הסיסמה השולטת בה עבור כל המשימות שברצונך להפעיל ללא השגחה. או עושה את זה?
הנה lowdown מהירה על איך OpenSSH CLI כלים (scp ו- sftp) לעבוד, כך שתוכל להעריך טוב יותר את הבעיה. כאשר ברצונך להעתיק קבצים אל המארח המרוחק או ממנו, באפשרותך להשתמש ב- scp שמפעיל באופן אוטומטי חיבור SSH למארח המרוחק. בכל פעם שאתה מפעיל פקודת SCP הוא יוצר חיבור חדש לשלט הרחוק. אז אם יש לך מספר פקודות scp אתה תהיה להזין את אותה סיסמה כמה פעמים.
זו הסיבה שאתה לא רוצה להשתמש ב- scp סקריפטים כלשהם אתה רוצה לרוץ ללא השגחה. יש גם את העובדה שאם יש לך חשבונות מרובים על מספר מחשבים ברשת, היית מתקשה לשנן סיסמאות ייחודיות וחזקות עבור כל אחת מהן.
כדי להתגבר על בעיה זו, עליך להחליף את מנגנון האימות של ברירת המחדל של OpenSSH למערכת מבוססת מפתח.
המפתח להצלחה
כברירת מחדל, OpenSSH משתמש רק במפתחות כדי לאמת זהות של שרת בפעם הראשונה שהלקוח פוגש מחשב מרוחק חדש:
$ ssh [email protected] האותנטיות של המארח 'atlantis.remote.com (atlantis.remote.com)' לא יכולה להיות מבוססת. טביעת אצבע של מפתח ECDSA היא da: e8: a2: 77: f4: e5: 10: 56: 6d: d4: d2: dc: 15: 8e: 91: 22. האם אתה בטוח שברצונך להמשיך להתחבר (כן / לא)?
כאשר אתה מגיב על ידי הקלדת "כן", המארח המרוחק מתווסף לרשימת המארחים הידועים. אז בנוסף לשרת המאמת את הלקוח על ידי בקשת סיסמה, הלקוח גם מאמת את השרת באמצעות מפתח.
באופן דומה, גם אתה יכול לקבל את עצמך קבוצה של מפתחות כדי להוכיח את זהותו. OpenSSH משתמש זוג מפתחות כדי להוכיח את הזהות שלך וליצור חיבור מאובטח לשרת מרוחק. המפתח הפרטי הוא עבור העיניים שלך בלבד והוא משמש את הלקוח OpenSSH שלך כדי להוכיח את זהותו לשרתים. ואז יש את המפתח הציבורי שבו אתה אמור לשמור תחת כל החשבונות שלך על כל מכונות מרוחקות אתה רוצה SSH לתוך.
כדי ליצור מפתח, על הלקוח שלך הזן:
$ ssh-keygen יצירת פרטי / פרטית rsa מפתח זוג. הזן קובץ לשמירת המקש (/home/bodhi/.shsh/id_rsa): הזן ביטוי סיסמה (ריק ללא ביטוי סיסמה): הזן שוב את משפט הסיסמה: הזיהוי שלך נשמר ב- /home/bodhi/.ssh/id_rsa. המפתח הציבורי שלך נשמר ב /home/bodhi/.shsh/id_rsa.pub.
זכור שלא להשאיר את משפט הסיסמה ריק ולשים לב למיקום שבו מאוחסנים המפתחות. הקובץ "id_rsa" קריא רק על ידי החשבון שלך, והתוכן שלו מוצפן במשפט הסיסמה שסיפקת במהלך הייצור.
השלב הבא הוא להעתיק את המפתח הציבורי לשרת המרוחק. בהנחה שאתה רוצה להיכנס למשתמש "admin" על המחשב המרוחק שנקרא "atlantis.remote.com", אתה יכול להזיז את המפתחות עם פקודה אחת:
$ ssh-copy-id -i ~ / .shsh / id_rsa.pub [email protected] [email protected] סיסמה:
לאחר שסיפקת את ביטוי הסיסמה עבור המפתח הפרטי שלך, המפתח הציבורי יוצב באופן אוטומטי במיקום הנכון בשרת המרוחק, אשר כברירת מחדל הוא הקובץ "~ / .shsh / author_keys".
כאשר אתה עכשיו ssh לתוך המחשב המרוחק, תתבקש ביטוי הסיסמה שלך. היתרון היחיד של שימוש במקשים הוא שבמקום לאמת אותך עם סיסמה המועברת לא מוצפנת, השרת המרוחק והלקוח שלך קובעים את הזהות שלך על סמך המקשים.
גם אתה יכול עכשיו ssh לתוך כמה תיבות מרוחקות באמצעות ביטוי סיסמה זהה, כל עוד אלה מכונות מרוחקות יש המפתח הציבורי שלך. אז אתה לא צריך לזכור סיסמאות מרובות.
אבל אתה עדיין לא יכול להריץ סקריפטים בלי להפריע עבור ביטויי סיסמה.
מידע נוסף : כיצד לאפשר אימות של שני גורמים עבור חיבור SSH
SSH-agent להצלה
OpenSSH מקבץ כלי שנקרא ssh-agent, שמחזיק את המפתחות הפרטיים בזיכרון. לאחר שהסוכן פועל, במקום להציג בפניך ביטויי סיסמה, לקוחות SSH יקיימו אינטראקציה עם הסוכן.
אתה יכול להתחיל את הסוכן עם " ssh-agent /bin/bash
", בהנחה שאתה משתמש פגז bash.
כל פקודות המחייבות גישה למפתחות הפרטיים של OpenSSH יורטטו ויענו על ידי הסוכן.
כאשר הסוכן פועל, אתה צריך לצייד אותו עם המפתחות שלך. זה נעשה על ידי הפעלת התוכנית "ssh-add" כי כברירת מחדל טוען את המפתחות מקובץ ברירת המחדל של זהות (~ / .shsh / id_rsa).
$ ssh-add הזן משפט-סיסמה עבור /home/bodhi/.shsh/id_rsa: זהות נוספה: /home/bodhi/.ssh/id_rsa (/home/bodhi/.ssh/id_rsa)
עכשיו כאשר אתה נכנס למחשב המרוחק עם " ssh [email protected]
", אתה תהיה רשאי מבלי להזין את משפט הסיסמה!
באופן דומה, scp ו- sftp יוכלו גם להתחבר אל המארחים המרוחקים מבלי לבקש ממך ביטוי סיסמה. אז עכשיו אתה יכול לתזמן ולהפעיל סקריפטים כי לתפעל קבצים במחשב מרוחק באופן אוטומטי.
גם עכשיו, כי אתה משתמש במפתחות, זה רעיון טוב להשבית אימות באמצעות סיסמאות. לשם כך, ערוך את קובץ התצורה של השרת המרוחק (/etc/ssh/.sshd_config) ושנה את הפרמטר PasswordAuthentication
מ"כן "ל"לא". מעתה ואילך, אם מישהו מנסה להתחבר לשירות SSH שלך שאין לו מפתח ציבורי בשרת, הם ימנעו גישה מבלי לראות את הודעת ההתחברות.
אשראי תמונה: Karunakar Rayker