SSH ล้มเหลว: คำขอการจัดสรร PTY ล้มเหลวในช่อง 0


11

ดังนั้นฉันจึงตรวจสอบข้อผิดพลาดและตรวจสอบข้อผิดพลาดของเซิร์ฟเวอร์ แต่โซลูชันไม่พอดี ผลลัพธ์ส่วนใหญ่มีปัญหากับ / dev / pts แต่นั่นติดตั้งอยู่ ผลลัพธ์อื่น ๆ คือข้อผิดพลาดกับ git แต่ไม่มี git บนเครื่อง

บัญชีของฉันไม่ถูกบล็อกฉันยังสามารถเข้าสู่คอนโซลได้ ผู้ใช้รายอื่นมีปัญหานี้ด้วยดังนั้นฉันไม่คิดว่าจะมีส่วนเกี่ยวข้องกับสิ่งที่อยู่ใน. ssh ของฉัน /

ฉันได้รับคำตอบนี้ด้วย ssh -vv:

<snip>
debug1: Next authentication method: password
rogier@server's password: 
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug2: channel 0: request shell confirm 1
debug2: fd 3 setting TCP_NODELAY
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel_input_status_confirm: type 100 id 0
PTY allocation request failed on channel 0
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0

หลังจากเซสชันนี้ค้าง ไม่มีใครมีความคิดว่าเกิดอะไรขึ้น?


5
คุณสามารถใช้ssh user@host "/bin/bash -i"เพื่อเข้าสู่ระบบได้หรือไม่?
ทิม

อืมม .. ใช่ว่างาน ...
blauwblaatje

1
ฉันได้เห็นกรณีที่/dev/pt*อุปกรณ์ที่จำเป็นต้องลบออกและเพิ่มใหม่ด้วยตนเองเพราะพวกเขาเสียหาย และในกรณีนั้นการใช้งานที่ฉันระบุไว้ข้างต้นก็ใช้ได้เช่นกัน
ทิม

@ เวลาฉันมีปัญหาเดียวกัน ssh user@host "/bin/bash -iฉันยังสามารถเข้าสู่ระบบด้วย คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับคำสั่งที่ฉันต้องใช้เพื่อแก้ไขปัญหานี้ได้อย่างไร ฉันจะคืนค่าได้/dev/pt*อย่างไร ขอบคุณ
Erwin Rooijakkers

4
@ user2609980 ทำงานmountหนึ่งในบรรทัดที่เอาต์พุตควรเป็น / dev / pts จดบันทึกตัวเลือก ถอนumount /dev/ptsติดตั้งและประกอบใหม่ด้วยการmount -t devpts -o OPTIONS devpts /dev/ptsแทนที่ OPTIONS ด้วยตัวเลือกที่คุณสังเกตเห็นก่อนถอนติดตั้ง
ทิม

คำตอบ:


10

โอเคขอบคุณทิม umounting / dev / pts จากนั้น mount / dev / pts ทำการหลอกลวง


นี่มันแปลกมาก ความคิดใด ๆ ว่าทำไมถึงเป็นเช่นนั้น? นี่เป็นข้อบกพร่องของไดรเวอร์อุปกรณ์หรืออย่างอื่นใช่หรือไม่ ได้รับการแก้ไขแล้ว? ฯลฯ ...
not2qubit

ไม่มีความเห็น. และฉันไม่ได้เห็นมันอีก
blauwblaatje

1
@blauwblaatje ฉันมีปัญหาเดียวกัน ssh user@host "/bin/bash -iฉันยังสามารถเข้าสู่ระบบด้วย คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับคำสั่งที่ฉันต้องใช้เพื่อแก้ไขปัญหานี้ได้อย่างไร ขอบคุณ
Erwin Rooijakkers

เท่าที่ฉันจำได้ฉันทำแค่เท่านั้น: umount / dev / pts && mount / dev / pts
blauwblaatje

ฉันเพิ่งมีปัญหาและต้องmkdir /dev/ptsทำงานก่อน มิฉะนั้นสิ่งนี้จะแก้ไขปัญหาให้ฉันได้
Angelo Fuchs

1

ให้ฉันบอกคุณทุกประสบการณ์ของฉันฉันพยายามที่จะเชื่อมต่อจากลินุกซ์ไปยังหน้าต่างผ่าน SSH มีเซิร์ฟเวอร์ที่มีopensshและคนอื่น ๆ ที่มีfreessh เมื่อเซิร์ฟเวอร์เปิดทำงานได้ดี แต่เมื่อเวลาผ่านไปจึงเริ่มแสดงข้อความ "คำขอเชลล์ล้มเหลวในแชนเนล 0" เมื่อ freessh เป็นบริการที่ใช้งาน (มาจากวันหนึ่งไปยังอีกวันหนึ่งมันใช้งานได้ดีกว่า openssh)

การทดสอบที่ทำโดยฉันคือการลองสร้าง conection จากผู้ใช้รายอื่นเนื่องจากฉันเห็นว่าทำงานได้ดีฉันสำรองข้อมูลของฉัน ~ / .ssh (ผู้ใช้ที่นำเสนอปัญหา) และหลังจากนั้นก็ใช้งานได้ดี

ฉันคิดว่าไฟล์ที่เกี่ยวข้องเป็นที่รู้จัก _ โฮสต์, perms ดูดีเช่นเดียวกับเนื้อหา แต่นั่นคือวิธีที่ฉันแก้ไขมัน


1

ข้อผิดพลาดเพียงหมายความว่าการเปิดเทอร์มินัลเทียมหลอกล้มเหลว ส่วนใหญ่แล้วมันไม่เกี่ยวกับ ssh หากต้องการดีบักบนฝั่งเซิร์ฟเวอร์ ssh ให้ใช้การสาธิต PTY อย่างง่าย ๆ เช่น mypty ในhttp://rachid.koucha.free.fr/tech_corner/pty_pdip.htmlเพื่อดูว่า PTY ใด ๆ สามารถจัดสรรได้เลย ถ้าไม่ใช้ strace เพื่อตรวจสอบว่ามันล้มเหลวที่ไหน (สำหรับฉันมันเป็น symlink หายไป / dev / ptmx ในภาชนะตามที่อธิบายไว้ในhttps://www.kernel.org/doc/Documentation/filesystems/devpts.txt )


0

อาจขึ้นอยู่กับคุณ LANG และการตั้งค่า LC ของคุณ แต่สิ่งนี้ใช้ได้สำหรับฉัน:

unset LANG        2>/dev/null
unset LC_MONETARY 2>/dev/null
unset LC_NUMERIC  2>/dev/null
unset LC_MESSAGES 2>/dev/null
unset LC_COLLATE  2>/dev/null
unset LC_CTYPE    2>/dev/null
ssh -l username hostname

2
ทำไมคุณคิดว่าปัญหาอาจเกี่ยวข้องกับตัวแปรสภาพแวดล้อมLANGและLC_*?
Adrian Heine

ฉันสงสัยว่าฉันเปลี่ยนแปลงอะไรก่อนที่สิ่งนี้จะเกิดขึ้น ฉันเปลี่ยนตัวแปรเหล่านี้จริง ๆ ! เรามาดูกันว่ามันใช้งานได้ดีไหม
Erwin Rooijakkers

0

ในกรณีของฉันฉันกำลังเชื่อมต่อกับโฮสต์ Windows (ใช้งาน cygwin และซอฟต์แวร์อื่น ๆ ที่เกี่ยวข้อง) จากกล่อง Linux

ความพยายามในการเชื่อมต่อกับเซิร์ฟเวอร์ windows ทำงานอย่างผิดปกติ แต่ล้มเหลวขณะจัดสรรเทอร์มินัลโต้ตอบ ตรวจสอบssh -vvบันทึกด้านล่าง

...
Authentication succeeded
...
Entering interactive session
Requesting authentication agent forwarding.
Sending environment.
Sending env LANG = en_US.UTF-8
PTY allocation request failed on channel 4
...

เพื่อนร่วมงานของฉันค้นพบว่าเป็นเพราะกระบวนการเปิดหลายอย่างบนเซิร์ฟเวอร์ windows ซึ่งใช้ข้อมูลการเข้าสู่ระบบแบบเดียวกับของฉันและทำการดำเนินการแบบแบทช์อัตโนมัติ

ฆ่ามันชั่วคราวทำกลอุบายและอนุญาตการเชื่อมต่อ ssh ของฉันสำเร็จ

เป็นไปได้มากว่า windows + cygwin มีขีด จำกัด สูงสุดในเรื่องนั้น งานยังคงเป็นการจัดสรรทรัพยากรอย่างถูกต้องเมื่อกระบวนการเหล่านั้นทำงานเสร็จ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.