תיקון: מסוף פסאודו לא יוקצה מכיוון ש- stdin אינו מסוף



נסה את הכלי שלנו לביטול בעיות

ברוב המקרים, תקבל שגיאה מבלבלת 'פסאודו-טרמינל לא יוקצה מכיוון ש- stdin אינו מסוף', רק כאשר אתה מריץ פקודת SSH כלשהי מתסריט. אם אתה מריץ את אותה פקודה משורת הפקודה, זה עשוי לעבוד בסדר גמור.



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



שיטה 1: אילוץ והשבתה של הקצאת פסאודו

יש זוג אפשרויות שורת פקודה שעשויות לפתור את הבעיה במהירות עבורך. נסה ssh -t -t -R ואחריו שאר הדברים שניסית להתחבר אליו בכדי לכפות על הקצאת פסאודו-טרמינל. למשל, נניח שהייתם משתמשים ב- ssh -p 80 appuals@ssh.example.com כדי להיכנס לחשבון שלכם ב- example.com, וזה כמובן דמה לתיעוד שאינו קיים.



נסה לרוץ למשל ssh -t -t -R -p 80 appuals@ssh.example.com ובדוק אם זה פותר את הבעיה. יהיה עליכם כמובן להחליף את השם בחשבון ובמארח האמיתי שלכם על מנת להיכנס בהצלחה למערכת. זה מכריח את הקצאת המסוף, כך שלא תראה שהמסוף הפסאודו לא יוקצה מכיוון ש- stdin אינו שגיאת מסוף.

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

זה בהחלט מתסכל אם כי ללא קשר, אז השתמש ב- Ctrl + C כדי להרוג את התהליך.



פסאודו טרמינל

אתה יכול לנסות להשתמש במתג אחד בלבד או להגדיל את המספר. אם זה לא עובד, אז החלף כל מתג -t במתג -T בפקודה, למשל. ssh -T -R -p 80 appuals@ssh.example.com ובדוק אם זה עובד.

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

מכיוון שפקודת ssh נתנה לשתי האפשרויות ההפוכות הללו שמות דומים, זכור ש- t מכריח את הקצאת מסופי פסאודו בעוד ש- T משבית אותה. אפשרויות אלה הן תלויות רישיות, ולעתים קרובות הן נחוצות מבפנים של סקריפטים מכיוון ש- ssh זקוק למסוף TTY מסורתי כדי לעבוד. באופן טבעי, במקרה שלך היית משתמש באמולטור המסוף שלך למטרה זו.

שיטה 2: שימוש ב- sshpass

אנשים מסוימים עשויים לגלות שהתסריטים שלהם עובדים טוב יותר עם הפקודה sshpass, שאינה כלולה כברירת מחדל. אתה תמיד יכול להתקין אותו עם sudo apt-get install sshpass או sudo yum install sshpass אם אתה מעדיף לנסות את זה או בגלל שאתה זקוק לו למקרה השימוש הספציפי שלך.

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

לדוגמה, השתמש ב- sshpass -p סיסמה ssh -T appuals@ssh.example.com כדי להכריח את המערכת לעבוד מתוך הסקריפט שלך.

שיטה 3: תיקון שגיאות בניהול משרות

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

שגיאה זו נגרמת על ידי משהו שאינו סדיר בשרת המרוחק הקשור ל- csh, tcsh או אולי אפילו ל- Almquist או למעטפת אחרת. יתכן שלא שמתם לב לכך כי קיבלתם הודעות שגיאה אחרות, אך בתנאי שלא תראו אף אחד אחר על מסופי פסאודו, יהיה אפשר להמשיך יחסית כמו בדרך כלל.

אולי לא תרצה לנסות להשתמש ב- Ctrl + Z במקרה זה כדי להפסיק תהליכים, מכיוון שייתכן שאין שום דרך להפעיל אותם שוב. אם אתה מקבל הודעת שגיאה שקוראת שיש עבודות שהופסקו כשתצא, אז לא תוכל להתנתק.

הפסיק עבודות

השתמש בפקודות ps והרוג כדי לסגור את כל העבודות שלא תוכל לסגור, בהנחה שלא אכפת לך לאבד עבודה בתהליך. תוכל לצאת עכשיו.

תגים כיצד לבצע לינוקס ssh 3 דקות קריאה