แก้ไข: sudo: ไม่มี tty ปัจจุบันและไม่มีโปรแกรม askpass ระบุ

ไม่มี tty ปัจจุบันและไม่มีโปรแกรม askpass ระบุบรรทัดเอาต์พุตเป็นหนึ่งในบรรดาข้อความแสดงข้อผิดพลาด ssh ที่จริงๆไม่ใช่สิ่งที่เป็นประโยชน์เพราะไม่ได้จริงๆถึงจุดที่เป็นสาเหตุของปัญหา กว่าจะเป็นจริงคุณกำลังทำงานกับ TTY ที่ถูกต้องบางประเภทเมื่อคุณเห็นข้อความและคุณอาจจัดการกับการป้อนรหัสผ่าน sudo ของคุณผ่าน ssh เพียงแค่ปรับ คุณมีความเป็นไปได้มากกว่าที่จะรับมือกับข้อผิดพลาดทางไวยากรณ์ แต่ข้อความนี้ไม่ได้กล่าวถึงข้อเท็จจริงนี้โดยตรง

เนื่องจากนี่เป็นปัญหาที่เกี่ยวข้องกับ ssh เองคุณอาจจะสามารถทำซ้ำปัญหาบน Linux, FreeBSD, macOS และ Cygwin's Unix ใน Microsoft Windows ได้ โชคดีที่การแก้ไขควรจะสวยมากเหมือนกันในทุกแพลตฟอร์มเหล่านี้

วิธีที่ 1: การค้นหาสถานีสำหรับ ssh

ในขณะที่คุณมีโอกาสมากกว่าที่จะทำงานจากเครื่องเทอร์มินัลแล้ว ssh อาจไม่ได้ตระหนักถึงสิ่งนี้ อาจยังคงพยายามค้นหาโปรแกรมจำลองเทอร์มินัล TTY แม้ว่าคุณจะอยู่ภายในหน้าต่างพรอมต์คำสั่งก็ตาม ลองทำซ้ำข้อผิดพลาดเพื่อทดสอบ เราได้กำหนดค่าเครื่องเสมือนเพื่อใช้เป็นตัวอย่างและเรียกใช้ ssh [email protected] 'sudo /var/mail/startup.sh' เป็นแบบทดสอบ อย่างเป็นธรรมชาติคุณจะต้องเปลี่ยนบรรทัดคำสั่งและ ssh เป็นบางอย่างที่ตรงกับสิ่งที่คุณกำลังพยายามทำ

คุณต้องการให้แน่ใจว่าคุณกำลังเข้าสู่ระบบเซิร์ฟเวอร์ที่คุณคิดว่าเป็นของคุณ ไม่ว่าจะตรวจสอบดูว่าคุณยังคงได้รับข้อความแสดงข้อผิดพลาด sudo: no tty และไม่มีโปรแกรม askpass ถ้าคุณยังคงใช้งานอยู่คุณจะเห็นข้อมูลนี้สามครั้งและอาจได้รับคำแนะนำให้ใส่รหัสผ่านของคุณตามที่คุณต้องการหากคุณใช้ sudo เฉพาะใน Debian หรือ Ubuntu

ลองเพิ่ม -t หลังจาก ssh เพื่อแก้ไขข้อผิดพลาดทางไวยากรณ์ของคุณ เก้าครั้งในสิบครั้งนี้จะบังคับให้ ssh จัดสรร TTY เสมือนให้กับตัวเองและแกล้งทำเป็นว่ากำลังทำงานอยู่ภายในเทอร์มินัลจริง คุณไม่จำเป็นต้องเปลี่ยนแปลงอะไรอื่น ๆ เกี่ยวกับคำสั่งของคุณ เพียงแค่เพิ่มตัวเลือก -t หลังจากตัวอักษร ssh แล้วเก็บโฮสต์และผ่านคำสั่งเดียวกัน นอกจากนี้คุณยังต้องการทราบเรื่องนี้หากคุณต้องเรียกใช้ SSH ในส่วนหลังของคำสั่งของคุณ

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

ตัวอย่างเช่นถ้าคุณได้รับข้อผิดพลาดเดียวกันนี้เมื่อเรียกใช้คำสั่งที่จัดรูปแบบเป็น ssh -t [email protected] 'ssh [email protected]' คุณจะต้องเก็บตัวเลือก -t ไว้หลัง ssh แรกเพื่อ ป้องกันไม่ให้มัน โปรดทราบว่าถ้าภายหลังคุณเปลี่ยนคำสั่งที่สองให้สร้างหรือใช้ข้อมูลคุณจะไม่ต้องการใช้ -t เลย ตัวอย่างเช่นถ้าคุณเริ่มทำงานแมวแทนสคริปต์แล้วคุณสามารถถ่ายโอนข้อมูล -t เนื่องจากคุณไม่จำเป็นต้องจัดสรรสถานีสำหรับที่

วิธีที่ 2: การแก้ไขไฟล์ visudo

นอกจากนี้คุณอาจมีปัญหาเกี่ยวกับการกำหนดค่าที่ทำให้เกิดข้อผิดพลาดนี้ แก้ไขไฟล์ visudo โดยการออกคำสั่ง sudo visudo และโปรดจำไว้ว่าคุณจะไม่ต้องแก้ไขไฟล์นี้ด้วยวิธีอื่น คุณควรหาบรรทัดที่มีคุณลักษณะ ALL = NOPASSWD ตามด้วยประเภทของคำสั่งที่คุณไม่จำเป็นต้องใส่รหัสผ่านของผู้ดูแลระบบเพื่อให้ทำงาน

คำสั่งแต่ละคำต้องจบด้วยเครื่องหมายจุลภาคยกเว้นบรรทัดสุดท้ายในบรรทัด ดังนั้นถ้าคุณมีสิ่งที่อ่านเช่น / sbin / poweroff / sbin / start / sbin / stop จะถือว่าทั้งหมดเป็นคำสั่งเดียวและโยนข้อผิดพลาดที่คุณ ในทำนองเดียวกันถ้าคุณไม่มีคำสั่งที่คุณกำลังพยายามเรียกใช้ผ่าน ssh คุณจะได้รับข้อผิดพลาดนี้ด้วย ทำการปรับเปลี่ยนที่จำเป็นและบันทึกแฟ้มก่อนที่จะตรวจสอบว่าข้อผิดพลาดยังสามารถทำซ้ำได้หรือไม่

หากคุณยังคงมีข้อผิดพลาดแม้หลังจากทำเช่นนั้นและเริ่มต้นบริการใหม่แล้วลองใช้ คำสั่งต่อไปนี้ในภาพด้านล่าง และตรวจสอบให้แน่ใจว่าบรรทัด PermitTTY มีคำว่า yes หลังจากนั้น ถ้านี่เป็นบรรทัดสุดท้ายในไฟล์ของคุณโปรดตรวจสอบให้แน่ใจว่ามีบรรทัดใหม่ที่ว่างไว้หลังจากนั้น GNU nano จะทำงานนี้โดยอัตโนมัติตามค่าเริ่มต้น

คุณจะต้องเริ่มต้นบริการที่เกี่ยวข้องก่อนที่จะพยายามสร้างข้อความแสดงข้อผิดพลาดอีกครั้ง

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

Facebook Twitter Google Plus Pinterest