แก้ไข: Pseudo-terminal จะไม่ถูกจัดสรรเนื่องจาก stdin ไม่ใช่ terminal
ในกรณีส่วนใหญ่คุณจะได้รับเทอร์มินัลหลอกที่สับสนเนื่องจากจะไม่ได้รับการจัดสรรเนื่องจาก stdin ไม่ใช่ข้อผิดพลาดของเทอร์มินัลเฉพาะเมื่อคุณรันคำสั่ง SSH บางประเภทจากสคริปต์ ถ้าคุณใช้คำสั่งเดียวกันจากบรรทัดคำสั่งโปรแกรมจะทำงานได้ดี
ก่อนอื่นโปรดตรวจสอบว่าคุณได้เพิ่มคีย์สาธารณะของคุณไปยังตัวแทน SSH แล้วลองใช้ ssh อีกครั้ง คุณอาจเพิ่งหายไป ในทางกลับกันหากวิธีนี้ไม่ได้ผลคุณจะต้องแก้ไขปัญหาเล็กน้อยในสคริปต์ของคุณ
วิธีที่ 1: บังคับและปิดใช้งานการจัดสรร pseudo-tty
มีคู่ของตัวเลือกบรรทัดคำสั่งที่อาจแก้ไขปัญหาได้อย่างรวดเร็วสำหรับคุณ ลอง ssh -t -t-R ตามด้วยส่วนที่เหลือของสิ่งที่คุณกำลังพยายามเชื่อมต่อเพื่อบังคับให้มีการจัดสรรเทียมขั้ว ตัวอย่างเช่นสมมุติว่าคุณจะใช้ ssh -p 80 [email protected] เพื่อเข้าสู่บัญชีของคุณใน example.com ซึ่งแน่นอนว่าเป็น dummy สำหรับเอกสารที่ไม่มีอยู่
ลองใช้เช่น ssh -t -t -R -p 80 [email protected] และดูว่าวิธีนี้สามารถแก้ไขปัญหาได้หรือไม่ แน่นอนคุณจำเป็นต้องเปลี่ยนชื่อด้วยบัญชีจริงและชื่อโฮสต์ของคุณเพื่อที่จะเข้าสู่ระบบได้สำเร็จ นี้บังคับให้การจัดสรร terminal ดังนั้นคุณไม่ควรเห็น pseudo-terminal จะไม่ได้รับการจัดสรรเนื่องจาก stdin ไม่ใช่ข้อผิดพลาด terminal
ในทางกลับกันคุณอาจจบลงด้วยสตริงข้อความผิดพลาด ผู้ใช้บางรายได้ตั้งข้อสังเกตว่าเรื่องนี้อาจถือได้ว่าน่าขบขัน
มันน่าผิดหวังแน่นอนแม้ว่าโดยไม่คำนึงถึงดังนั้นใช้ Ctrl + C เพื่อฆ่ากระบวนการ
คุณสามารถลองใช้สวิตช์ทีละหนึ่งหรือเพิ่มจำนวนก็ได้ หากไม่ได้ผลให้แทนที่สวิตช์ -t ด้วยสวิตช์ -T ในคำสั่งเช่น ssh -T -R -p 80 [email protected] และดูว่าการทำงานนั้นใช้ได้หรือไม่
วิธีนี้จะปิดการใช้งานกระบวนการจัดสรร terminal ปลอมโดยสิ้นเชิงดังนั้นจึงอาจใช้งานได้ในกรณีที่บังคับให้ใช้ไม่ได้ แน่นอนไม่มีปัญหานี้ควรเป็นปัญหาจากบรรทัดคำสั่ง แต่ต้องจดบันทึกเมื่อคุณพบว่าตัวเลือกใดทำงานจากสคริปต์ของคุณเพื่อให้คุณสามารถใช้สคริปต์ใด ๆ ในอนาคตที่คุณต้องเรียกใช้เพื่อเข้าถึงเซิร์ฟเวอร์ดังกล่าว
PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่เนื่องจากคำสั่ง ssh ให้ทั้งสองชื่อตรงกันข้ามตัวเลือกที่คล้ายกันโปรดจำไว้ว่า -t บังคับจัดสรร pseudo-terminals ในขณะที่ -T ปิดการใช้งาน ตัวเลือกเหล่านี้มีความสำคัญกับตัวพิมพ์เล็กและตัวพิมพ์ใหญ่และมักจำเป็นจากด้านในของสคริปต์เนื่องจาก ssh ต้องการเทอร์มินัล TTY แบบดั้งเดิมที่สามารถใช้งานได้ ธรรมชาติในกรณีของคุณคุณต้องการใช้โปรแกรมจำลอง terminal ของคุณเพื่อจุดประสงค์นี้
วิธีที่ 2: การใช้ sshpass
บางคนอาจพบว่าสคริปต์ของตนทำงานได้ดีกว่าด้วยคำสั่ง sshpass ซึ่งไม่รวมอยู่ในค่าเริ่มต้น คุณสามารถติดตั้งได้ทุกเมื่อด้วย sudo apt-get install sshpass หรือ sudo yum install sshpass หากคุณต้องการทดลองใช้หรือเพราะคุณต้องการใช้งานในกรณีที่คุณต้องการ
ถ้าคุณยังไม่ได้ใช้มันคุณอาจไม่จำเป็นต้องใช้ อย่างไรก็ตามคุณสามารถใช้เทคนิคเดียวกันกับข้อความผิดพลาดที่น่าประหลาดใจเกี่ยวกับการจัดสรรเทียมขั้วในสภาพแวดล้อมเช่นนี้ได้
ตัวอย่างเช่นใช้ sshpass -p password ssh -T [email protected] เพื่อบังคับให้ระบบทำงานจากภายในสคริปต์ของคุณ
วิธีที่ 3: แก้ไขข้อผิดพลาดในการจัดการงาน
ในบางครั้งคุณอาจได้รับข้อความแสดงข้อผิดพลาดอื่น ๆ แม้หลังจากแก้ไขปัญหาทั้งหมดนี้แล้ว ถ้าคุณได้รับคำเตือนที่ไม่สามารถเข้าถึง TTY ได้และคุณเตือนว่าไม่มีการควบคุมงานในเปลือกของคุณคุณควรจะสามารถทำงานได้ค่อนข้างปกติ
ข้อผิดพลาดนี้เกิดจากสิ่งที่ไม่สม่ำเสมอบนเซิร์ฟเวอร์ระยะไกลที่เกี่ยวข้องกับ csh, tcsh หรือแม้กระทั่งแม้แต่ Almquist หรือ shell อื่น ๆ คุณอาจไม่ได้สังเกตเห็นเพราะคุณได้รับข้อความแสดงข้อผิดพลาดอื่น ๆ แต่ถ้าคุณไม่เห็นคนอื่น ๆ เกี่ยวกับเทอร์มินัลหลอกควรมีความเป็นไปได้ที่จะดำเนินการต่อไปได้ตามที่คุณต้องการ
คุณอาจไม่ต้องการลองใช้ Ctrl + Z ในกรณีนี้เพื่อหยุดกระบวนการเนื่องจากอาจไม่มีวิธีใดที่ทำให้พวกเขาเริ่มต้นการสำรองข้อมูลอีกครั้ง ถ้าคุณได้รับข้อความแสดงข้อผิดพลาดที่อ่านว่ามีงานหยุดเมื่อคุณออกแล้วคุณจะไม่สามารถออกจากระบบได้
ใช้คำสั่ง ps และ kill เพื่อปิดงานที่คุณไม่สามารถปิดได้โดยสมมติว่าคุณไม่ต้องเสียงานในกระบวนการ ตอนนี้คุณสามารถออกได้
PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่