ไม่สามารถ SSH: debug1: ต้องการ SSH2_MSG_KEX_DH_GEX_REPLY


24

เรามีเซิร์ฟเวอร์ XXX บน Amazon EC2

SSH กำลังทำงานบนพอร์ตมาตรฐาน (22)

ฉันวาง pubkey ของฉันไว้ที่ไฟล์ /.ssh/authorized_keys

สิ่งที่สนุกคือเมื่อวานนี้มันใช้งานได้ดีมาก!

แต่วันนี้ฉันไม่รู้ว่าเกิดอะไรขึ้น! ฉันไม่สามารถเข้าสู่ระบบได้

ssh -vvvv ชื่อเซิร์ฟเวอร์

ติดอยู่

debug1: ต้องการ SSH2_MSG_KEX_DH_GEX_REPLY

ฉันตรวจสอบ pubkey ของฉันและมันอยู่ที่นั่น! (ฉันจะตรวจสอบอย่างไรฉันถามคนอื่นเพื่อตรวจสอบ)

จากนั้นฉันใช้คอมพิวเตอร์เครื่องอื่น (windows 7 + putty) และวาง pubkey ใหม่ของฉัน และอะไร? ฉันสามารถเข้าสู่ระบบได้! และนั่นคือคอมพิวเตอร์อีกเครื่องหนึ่งที่มี Win7 อยู่ใน LAN เดียวกันซึ่งหมายความว่า IP ภายนอกเหมือนกัน

ไพรเวตคีย์ของฉันใช้ได้กับเซิร์ฟเวอร์อื่น แต่ไม่สามารถใช้งานได้

กรุณาช่วย!


ฉันสร้างปุ่มใหม่และจัดเก็บ pubkey ใหม่ .. สิ่งเดียวกัน! ฮ่า!
bakytn

ถ้าปัญหาของคุณไม่เกี่ยวข้องกับการรับรองความถูกต้อง pubkey: การแลกเปลี่ยนคีย์ DH ( SSH2_MSG_KEX_DH_GEX_REPLY) เกิดขึ้นเร็วกว่ามากในการเชื่อมต่อ
grawity

ขอบคุณสำหรับข้อมูล. BTW GUYS ปัญหาได้รับการแก้ไขด้วยตัวเอง ฉันไม่ได้พยายามลงชื่อเข้าใช้ แต่ฉันก็ไม่ประสบความสำเร็จ hah
bakytn

เวลาแฝงของเครือข่ายไม่ดี หยดมากแค่ไหน? มันเป็นข้อความธรรมดา
Korjavin Ivan

อาจจะเป็น ตอนนี้ฉันไม่สามารถทำซ้ำได้ แต่อย่างใด ดังนั้นอาจมาจากด้านข้างของฉัน
bakytn

คำตอบ:


28

เปลี่ยนเน็ตเวิร์กอินเตอร์เฟส MTU เพื่อแก้ปัญหา นี่เป็นข้อผิดพลาดสำหรับ Ubuntu 14.04

สิ่งนี้ใช้ได้กับฉัน:

sudo ip li set mtu 1200 dev wlan0

หรือ

sudo ifconfig wlan0 mtu 1200

ssh ล้มเหลวในการเชื่อมต่อกับโฮสต์ VPN - ค้างที่ 'คาดว่า SSH2_MSG_KEX_ECDH_REPLY'


sudo ip li set mtu 1400 dev eno1ทำงานให้ฉันใน Ubuntu 16.04
Márcio

ขอบคุณมาก. ฉันไม่สามารถใช้ SSH หรือเดสก์ท็อประยะไกลในหนึ่งกล่องได้เป็นเวลาหลายสัปดาห์ งาน HTTP และเครื่องที่อยู่ติดกันทำงานได้ดี ฉันต้องกระโดดจากเครื่องอื่นเพื่อเข้ามา
duckbrain

12

ปัญหาเดียวกันที่นี่ในการเข้าถึงเซิร์ฟเวอร์เฉพาะที่ online.net ดาต้าเซ็นเตอร์

ไม่มีปัญหาหลังจากรีบูตไม่จำเป็นต้องเปลี่ยน MTU การเชื่อมต่อ ssh ใช้งานได้ 1-3 สัปดาห์จากนั้นจะปรากฏข้อผิดพลาดเดียวกันนี้อย่างแน่นอนบล็อกบน KEXINIT ไม่สามารถเชื่อมต่อเซิร์ฟเวอร์ ssh ได้อีก

อาจเป็นข้อผิดพลาดบางอย่างของ sshd แต่สิ่งที่เกิดขึ้นกับพวก nework บางอย่างเกิดขึ้นหลังจาก 1-3 สัปดาห์ฉันทำซ้ำปัญหานี้แน่นอนหลายครั้งกับเซิร์ฟเวอร์ต่าง ๆ ในเครือข่ายนี้บางคนบอกว่ามันอาจเกี่ยวข้องกับข้อผิดพลาดของ Cisco อาจเกี่ยวข้องกับตัวเลือก DPI บางตัว

ปัญหานั้นไม่เคยเกิดขึ้นกับเซิร์ฟเวอร์ตัวอื่นที่ฉันจัดการในดาต้าเซ็นเตอร์อื่น ๆ และนั่นก็มี distro, config และ sshd รุ่นเดียวกัน

หากคุณไม่ต้องการรีบูตทุก ๆ 10 วันเพราะดาต้าเซ็นเตอร์ไฟร์วอลล์ (หรือเครือข่ายอื่นปรับแต่ง) กำลังทำสิ่งแปลก ๆ :

ก่อนอื่นให้เชื่อมต่อกับหนึ่งในวิธีแก้ปัญหาฝั่งไคลเอ็นต์:

วิธีแก้ปัญหา 1 ลดระดับท้องถิ่น MTU ฝั่งไคลเอ็นต์ของคุณ:

ip li set mtu 1400 dev wlan0

(1,400 ควรจะพอ แต่คุณสามารถลองใช้ค่าที่ต่ำกว่าถ้าจำเป็น)

วิธีแก้ปัญหา 2 ระบุ cypher ที่เลือกสำหรับการเชื่อมต่อ ssh:

ssh -c aes256-gcm@openssh.com host

(หรือลองใช้ Cypher อื่นก็ได้)

การแก้ปัญหาฝั่งไคลเอ็นต์ทั้งสองทำให้ฉันฉันสามารถเชื่อมต่อและประหยัดเวลาของฉัน แต่คุณต้องการแก้ไขฝั่งเซิร์ฟเวอร์นี้ตลอดไปดังนั้นคุณไม่จำเป็นต้องขอให้ลูกค้าทุกคนปรับแต่งโปรแกรม MTU ในเครื่อง

ใน gentoo ฉันเพิ่งเพิ่ม:

mtu_eth0="1400"

ใน /etc/conf.d/net

(ตัวเลือก mtu เดียวกันควรมีอยู่ในไฟล์กำหนดค่าเครือข่าย distro ที่ต้องการ)

ฉันได้ตั้งค่า MTU เป็น 1400 แต่ 1460 น่าจะเพียงพอแล้วในกรณีส่วนใหญ่

วิธีแก้ปัญหาอื่นที่ช่วยให้สามารถใช้กฎ iptables ต่อไปนี้เพื่อจัดการการกระจายตัว:

# / sbin / iptables -I เอาท์พุท -p tcp --tcp-flag SYN, RST SYN -j TCPMSS --clamp-mss-to-pmtu

# / sbin / ip6tables -I เอาท์พุท -p tcp --tcp-flag SYN, RST SYN -j TCPMSS --clamp-mss-to-pmtu

(แต่ส่วนตัวฉันไม่ต้องการตัวนี้มาก่อน)

โปรดทราบว่าอาการของปัญหานี้อาจเป็น:

debug1: SSH2_MSG_KEXINIT sent

ไม่ใช่แค่

debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

แก้ไขมีนาคม 2016:

  • การลด mtu เป็น 1400 บนเซิร์ฟเวอร์ส่วนใหญ่จะทำงานได้ แต่เมื่อเร็ว ๆ นี้ฉันมีกรณีที่ mtu ลดลงเหลือ 1400 บนเซิร์ฟเวอร์และปัญหาปรากฏขึ้นอีกครั้งและไคลเอนต์ต้องลด mtu ถึง 1400 ด้วย

  • ปัญหานี้ยังปรากฏในรูปแบบการเข้าสู่ระบบเว็บที่รอให้หน้าโหลดซ้ำจนกว่าจะพูดว่า "เซิร์ฟเวอร์รีเซ็ตการเชื่อมต่อ" แล้วแก้ไขหลังจากไคลเอนต์ตั้งค่า mtU เป็น 1400

    ลิงก์ที่เกี่ยวข้อง :

https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1254085

http://www.held.org.il/blog/2011/05/the-myterious-case-of-broken-ssh-client-connection-reset-by-peer/

https://nowhere.dk/articles/natty-narwhal-problems-connecting-to-servers-behind-cisco-firewalls-using-ssh

/programming/2419412/ssh-connection-stop-at-debug1-ssh2-msg-kexinit-sent

http://www.1-script.com/forums/ssh/ssh-hang-after-ssh2-msg-kexinit-sent-10616-.htm

http://www.snailbook.com/faq/mtu-mismatch.auto.html


สิ่งนี้สามารถเกิดขึ้นได้โดยเฉพาะอย่างยิ่งเมื่อคุณมี MTU ขนาดเล็กที่ผิดปกติมากในตอนท้ายของไคลเอนต์ fe ที่คุณต้องการใช้ openvpn บนเครือข่ายสองเท่า
Dennis Nolte

ฉันใช้ค่า mtu เริ่มต้นก่อนที่จะมีปัญหานี้การลด mtu เป็นวิธีแก้ปัญหาไม่ใช่ปัญหา กรุณาอธิบายความคิดเห็นของคุณ
neofutur

9

ในกรณีของฉันฉันไม่ได้รับอนุญาตให้ลดขนาด MTU และการระบุรหัสด้วยตนเองไม่ทำงาน

ฉันสามารถเชื่อมต่อหลังจากทำให้รายการ MAC สั้นลงโดยระบุหนึ่งเช่น:

ssh -o MACs=hmac-sha2-256 <HOST>

ฉันรู้ว่ามันจะไม่เป็น MTU หากมีคนมายุ่งกับ MTU ทางฝั่งเซิร์ฟเวอร์ก็อาจส่งผลกระทบต่อปริมาณงานของเครือข่าย ปัญหาต้องเป็นความแตกต่างของรุ่น OpenSSH และวิธีที่พวกเขาต้องการรวม cyphers และฟังก์ชัน MAC บางอย่าง
Csaba Toth

7

ฉันมีปัญหาเดียวกันหลังจากอัพเกรดเครื่องไคลเอนต์ Ubuntu ฉันแก้ไขปัญหาโดยลดขนาดของบรรทัด "Ciphers" ใน / etc / ssh / ssh_config นอกจากนี้ยังใช้งานได้หากคุณระบุ cypher ในบรรทัดคำสั่ง (เช่น: ssh -c username @ hostname)

เคล็ดลับจากที่นี่:

https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/708493/comments/39


2

ฉันเริ่มมีปัญหานี้วันนี้บน Windows (ssh กระจายกับ Git) และ Ubuntu

แต่ดูเหมือนว่ามันจะเป็นปัญหาที่เกี่ยวกับ OpenSSH มีปัญหาในLauchPad

มันใช้งานได้สำหรับฉันบน Windows ที่บังคับให้เข้ารหัส 3des-cbc และกุญแจบน Ubuntu


2

การเปลี่ยน KexAlgorithm ใช้งานได้สำหรับฉันและอาจเป็นตัวเลือกที่คุณไม่มีสิทธิ์ของระบบในการเปลี่ยนการตั้งค่า MTU นี่อาจเป็นสิ่งที่ลูกเรือ OpenSSH ต้องการ เช่น

ssh -o KexAlgorithms=ecdh-sha2-nistp521 fu@bar.com


-2

ดูเหมือนว่ากล่องโต้ตอบตัวเลือกจะทำให้เกิดปัญหาเนื่องจากฉันเปลี่ยนลำดับที่ Putty เจรจาการแลกเปลี่ยนคีย์และแก้ไขปัญหาได้


1
สิ่งที่เห็นได้ชัด? คำถามนี้ได้รับคำตอบ (พร้อมคำตอบที่ยอมรับได้) เมื่อ 4 ปีที่แล้ว
David Makogon

-3

cmiiw

  • ตรวจสอบการอนุญาตของคุณ ~ / .ssh / authorized_keys ควรเป็น 600

  • ตรวจสอบการเปิด / var / log / ปลอดภัย / var / log / ข้อความหรือ / var / log / auth


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