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

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

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

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

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

נסה להריץ למשל ssh -t -t -R -p 80 [email protected] ובדוק אם זה פותר את הבעיה. כמובן שתצטרך להחליף את השם בחשבון ובמארח שלך בפועל כדי להיכנס בהצלחה למערכת. זה מאלץ את הקצאת המסוף, כך שלא תראה שהמסוף הפסאודו לא יוקצה מכיוון ש- stdin אינו שגיאת מסוף.

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

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

אתה יכול לנסות להשתמש במתג אחד בלבד או להגדיל את המספר. אם זה לא עובד, החלף כל מתג -t במתג -T בפקודה, למשל ssh -T -R -p 80 [email protected] ובדוק אם זה עובד.

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

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

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

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

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

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

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

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

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

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

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

מתייג כיצד לבצע ssh של לינוקס