שאלה איך אני עושה ssh נכשל ולא הפקודה עבור סיסמה אם האימות מפתח ציבורי נכשל?


יש לי סקריפט זה ssh'es מספר שרתים באמצעות אימות מפתח ציבורי. אחד השרתים הפסיק לתת את התסריט להיכנס בשל בעיה בתצורה, כלומר את התסריט מקבל תקוע עם "סיסמה:" הפקודה, אשר ברור שזה לא יכול לענות, אז זה אפילו לא לנסות את שאר השרתים ברשימה.

האם יש דרך לספר ללקוח ssh לא להנחות סיסמה אם אימות מפתח נכשל, אבל במקום רק לדווח על שגיאה התחברות ולתת סקריפט שלי להמשיך?


91
2017-09-03 10:58






תשובות:


עבור OpenSSH יש גם BatchMode אשר בנוסף להשבית סיסמה המבקשת צריך להשבית שאילתה עבור ביטוי סיסמה (ים) עבור מפתחות.

BatchMode

אם מוגדר "כן", שאילתה passphrase / סיסמה יושבת.     אפשרות זו שימושית בסקריפטים ובעבודות אצווה אחרות שבהן לא     המשתמש קיים כדי לספק את הסיסמה. הוויכוח צריך להיות     "כן או לא". ברירת המחדל היא "לא".

שימוש לדוגמה:

ssh -oBatchMode=yes -l <user> <host> <dostuff>

120
2017-09-03 12:09





הוסף את הפריטים הבאים ל ~/.ssh/configYou

PasswordAuthentication no

וכדי להשבית אימות סיסמה בשרת, הוסף את אותו השורה אל /etc/ssh/sshd_config ואתחול מחדש sshd.


12
2017-09-03 11:19



אם אינך רוצה להשבית את הסיסמה עבור כל חיבורי הלקוח של ssh, תוכל גם לציין אפשרויות בשורת הפקודה. הוסף '-OPasswordAuthentication = no' לפקודת ssh שלך. - cas
פעולה זו אינה מונעת את סיסמת הסיסמה. סקריפט של OP ימשיך לתלות. - Joshua Swink


אם אתה משתמש dropbear, פשוט להוסיף את "-s"אפשרות להשבית אימות סיסמה.


9
2017-09-03 11:54



+1 לא בהנחה שהלקוח נפתח :-) - cas


בשורת הפקודה (או ~/.ssh/config) ניתן להגדיר PreferredAuthentications.

PreferredAuthentications=publickey

6
2017-09-03 11:39



אני חושב, על שורת הפקודה, אתה צריך לעטוף את האפשרות במרכאות ולאחר מכן להעביר אותו ל-אופציה. - Craig Walker
@CraigWalker אתה יכול גם להעביר את זה כמו שהוא, כלומר. ssh -o PreferredAuthentications=publickey - Tobias Kienzler
@CraigWalker אתה צריך ציטוטים אם אתה רוצה להשתמש רווחים כדי להפריד את האפשרות ואת הערך למשל ssh "-oPreferredAuthentications publickey" - Timo