שאלה למה אני מקבל "הרשאה נדחתה (מפתח ציבורי)" כאשר מנסים SSH מאובונטו המקומית לשרת אמזון EC2?


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

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

האם מישהו יודע פתרון?


213
2017-07-13 07:38




"זה היה עובד קודם" - לפני מה? - womble♦
יש לי מופע גלקסיה EC2 גמישה. נכון אוגוסט 2013 הפתרון היה לגשת למשל כמו המשתמש המשתמש ec2 אשר עשה את הרשאה נדחתה (publicKey) שגיאה ללכת משם. כלומר: ssh -i ./mike-key-pairoregon.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com. כמובן שאתה צריך את כל שאר הדברים לפי stackoverflow.com/questions/4742478/... - mikemay
אתה מקבל את הבעיה אם יש לך את שם המשתמש שצוין שצוין. המסמכים (docs.aws.amazon.com/AWSEC2/latest/UserGuide/...) כרגע לתת דוגמה עם שם משתמש ec2 [ssh -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com], ואילו שלי ( הישן) יש שם משתמש של אובונטו, אז כאשר השתמשתי בדוגמה קיבלתי את השגיאה הזו, שינוי שם המשתמש הנכון פותר. - david.barkhuizen
@ david.barkhuizen, ההערה שלך עזר לי. היתה לי בעיה דומה; התברר שזה קשור לשם המשתמש. תודה. - NaijaProgrammer


תשובות:


הדבר הראשון לעשות במצב זה הוא להשתמש -v אפשרות ssh, כך שתוכל לראות אילו סוגים של אימות הוא ניסה ומה התוצאה. האם זה עוזר להאיר את המצב?

בעדכון שלך לשאלה שלך, אתה מזכיר "על אובונטו מקומי אחר". האם העתקת את המפתח הפרטי של Ssh למכונה האחרת?


140
2017-07-13 07:44



העתקתי את המפתח הפרטי של SSH למכונה האחרת כפי שהציע @Greg. זה עובד עכשיו. תודה! - Vorleak Chy
FYI ניתן להשתמש בדגל - i כדי להצביע על נתיב המפתחות מבלי להתקין אותם - Jorge Vargas
במקרה שלי, אני משתמשת bitamii .ami ולא מבינים שאתה צריך להיכנס בתור המשתמש שנקרא bitnami, כמו: ssh -i <keyfile> bitname@<ec2-address>. לצערנו, ה -v אפשרות לא לעזור לי למצוא את זה, אבל זה עדיין מאוד שימושי כדי לבדוק! - Matt Connolly
ובכן, במקרה שלי אני משתמש בשם המשתמש שגוי. היה משתמש "אובונטו" במקום "bitnami". כמו זה: ssh -i key.pem bitnami @ hostaddress - Lucas Pottersky
להוביל טוב הוא גם הצומת מרחוק עצמו, להסתכל פנימה /var/log/auth.log, לפעמים תראה את ההודעות הבאות: Authentication refused: bad ownership or modes for file /var/lib/jenkins/.ssh/authorized_keys או משהו אחר - Jonas Libbrecht


כפי שהוא לא צוין במפורש, sshd הוא כברירת מחדל מאוד קפדנית מאוד על הרשאות על authorized_keys קבצים. אז אם authorized_keys J ניתן לכתוב עבור כל משתמש שאינו המשתמש או המשתמש ניתן לכתוב על ידי מישהו אחר מאשר המשתמש, הוא יסרב לאמת (אלא אם כן מוגדר sshd עם StrictModes no)

מה שאני מתכוון "יכול להתבצע לכתיבה" הוא שאם כל הספריות האב הם כתובים עבור כל אדם אחר מאשר המשתמש, משתמשים מורשים לשנות ספריות אלה יכולים להתחיל לשנות הרשאות בצורה כזו שהם יכולים לשנות / להחליף author_keys.

זה לא יופיע עם ssh -v, הוא יופיע ביומני שנפלטים על ידי sshd (בדרך כלל לשים פנימה /var/log/secure או /var/log/auth.log, תלוי distro ו syslogd תצורה).

מאת האדם sshd (8):

 ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described above.  The
         content of the file is not highly sensitive, but the recommended
         permissions are read/write for the user, and not accessible by
         others.

         If this file, the ~/.ssh directory, or the user's home directory
         are writable by other users, then the file could be modified or
         replaced by unauthorized users.  In this case, sshd will not
         allow it to be used unless the StrictModes option has been set to
         “no”.

73
2018-01-05 14:38



זה "יכול להתבצע כתב" קצת מה יש לי - wmarbut
FWIW ההרשאות הנכונות עבור קבצי המפתח הם 600 (ראה כאן) - Matt Lyons
כן, קובץ ה- .authorized_keys שלי ניתן לכתוב על ידי הקבוצה ולכן הוא סירב לקבל. - Aditya M P
הייתי מכה את ראשי על הקיר! לתיקיית המשתמש שלי היו הרשאות שגויים. תודה! - XJones
כנ"ל לגבי תיקיית ~ / .shsh עצמה. עלולה להופיע הודעת השגיאה הבאה: Authentication refused: bad ownership or modes for directory - Yevgeniy M.


קיבלתי את השגיאה הזו, כי שכחתי להוסיף -l אפשרות. שם המשתמש המקומי שלי לא היה זהה לזה של המערכת המרוחקת.

זה לא עונה על השאלה שלך, אבל הגעתי לכאן מחפש תשובה לבעיה שלי.


37
2018-04-01 21:51



ssh host -l user הוא זהה ssh user@host, ימין? - Znarkus
@ Znarkus כן, זה אותו דבר. - cregox
כן, זה פתר את הבעיה שלי גרימת "הרשאה נדחתה (Publickey)" שגיאה גם כן. - Brooks Moses
זאת היתה הבעיה בשבילי. ציפיתי המשתמש "שורש" לעבוד, אבל אני משתמשת תמונה אובונטו EC2 אשר היה המשתמש ברירת המחדל "אובונטו". - Cerin


קיבלתי את ההודעה על מקרה חדש המבוסס על AMI אובונטו. הייתי משתמש באפשרות - i כדי לספק את PEM אבל זה עדיין מראה את "הרשאה נדחתה (publickey)".

הבעיה שלי היתה שאני לא משתמש המשתמש הנכון. על ידי הפעלת ssh עם ubuntu @ ec2 ... זה עבד כמו נורמלי.


19
2017-11-17 16:29



כן ... אני רץ עם הפקודה sudo, ולכן זה לא עובד. - thaddeusmt


משהו שקל יותר לקריאה ממנו ssh -i (לדעתי כמובן), הוא tail -f /var/log/auth.log. זה צריך להיות מופעל על השרת שאתה מנסה להתחבר, תוך כדי ניסיון להתחבר. הוא יציג שגיאות בטקסט רגיל.

זה עזר לי לפתור את הבעיה שלי:

משתמש [שם משתמש] מ xx.yy.com אינו מורשה מפני שאף אחת מקבוצות המשתמשים אינה מופיעה ברשימה AllowGroups


16
2018-02-01 14:07



אני חושב שהתכוונת -v - Tim Tisdall
זה יומן השרת. עבור RHEL / CentOS 7: tail -f /var/log/secure - Gianfranco P.


בדוק את / etc / ssh / sshd_config קובץ. שם, למצוא את הקו שאומר

PasswordAuthentication no

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

sudo /etc/init.d/ssh restart

11
2017-12-10 06:15



זה יגרום השרת פחות מאובטח. - Znarkus
זו היתה הבעיה שיש לי: רציתי להגדיר חשבון עבור משתמש אחר, אימות עם רק סיסמה. אני גם רציתי להיות מסוגל להיכנס כמוני ממקומות שבהם לא היה לי המפתח הפרטי שלי. - Daniel
איך אנחנו יכולים ללכת /etc/ssh/sshd_config - אם אנחנו לא יכולים אפילו להיכנס לשרת? - kyo
כדי להיכנס לשרת עצמו, עליך להשתמש בקובץ PEM שהם נתנו כאשר יצרת את המופע. ההוראות ללכת אחרי זה. - Sudipta Chatterjee
זה עבד בשבילי, למרות מחדש sshd נדרש את הפקודה הבאה: sudo service sshd reload - pacoverflow


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

זה מאפשר לך לשחרר את התחביר מסוג "i" ב ssh, להשתמש rsync עם אפשרויות סטנדרטיות, וגם מאפשר לך להשתמש באותו מפתח ssh על פני כל אזורי EC2.

כתבתי מאמר על תהליך זה כאן:

העלאת אישי SSH מקשים אמזון EC2
http://alestic.com/2010/10/ec2-ssh-keys


6
2017-09-29 21:15



+1 חפש את השאלה הזו בדיוק מסיבה זו. - John Riselvato
אני רואה את השגיאה הבאה המאמר שלך. אזורים = $ (ec2-description-region | cut-f2) אפשרות נדרשת '-K, - פרטי-מפתח KEY' חסר (לשימוש עבור) - KashifAli
@ KashifAli אתה רוצה להגדיר את שורת הפקודה EC2 פקודות כלי הפקודה, כך שאתה לא תמיד צריך להעביר את האישורים על כל שורת פקודה. - Eric Hammond


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


5
2017-08-08 21:00



תודה! זאת היתה בדיוק הבעיה שלי. לא שמתי לב שהשם DNS השתנה בעת הפעלה מחדש של מופע. - Tim Swast
במקרה שלי, כתובת האתר * .compute.amazonaws.com השתנתה כאשר הוקצה לי כתובת IP גמישה. - Geoffrey Booth