ssh ไม่สามารถเจรจา: "ไม่พบรหัสที่ตรงกัน" กำลังปฏิเสธ cbc


23

ฉันพยายามที่จะ ssh ไปยังเครื่องระยะไกลความพยายามล้มเหลว:

$ ssh -vvv admin@192.168.100.14
OpenSSH_7.7p1, OpenSSL 1.0.2o  27 Mar 2018
.....
debug2: ciphers ctos: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: ciphers stoc: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com
debug2: compression stoc: none,zlib@openssh.com
debug2: languages ctos: 
debug2: languages stoc:
debug2: first_kex_follows 0 
debug2: reserved 0 
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: rsa-sha2-512
Unable to negotiate with 192.168.100.14 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

เท่าที่ผมเข้าใจสตริงสุดท้ายของบันทึกข้อเสนอเซิร์ฟเวอร์ที่จะใช้อย่างใดอย่างหนึ่งดังต่อไปนี้ 4 aes128-cbc,3des-cbc,aes192-cbc,aes256-cbcขั้นตอนวิธีการเข้ารหัสนี้: ดูเหมือนว่าไคลเอ็นต์ ssh ของฉันไม่สนับสนุนใด ๆ เลยดังนั้นเซิร์ฟเวอร์และไคลเอ็นต์ไม่สามารถเจรจาเพิ่มเติมได้

แต่ลูกค้าของฉันรองรับอัลกอริทึมที่แนะนำทั้งหมด:

$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
... and there are several more.

และถ้าฉันระบุอัลกอริทึมอย่างชัดเจน:

ssh -vvv -c aes256-cbc admin@192.168.100.14

ฉันสามารถเข้าสู่เซิร์ฟเวอร์ได้สำเร็จ

ฉัน~/.ssh/configไม่ได้มีคำสั่งที่เกี่ยวข้องกับการเข้ารหัส (จริง ๆ แล้วฉันลบมันอย่างสมบูรณ์ แต่ปัญหายังคงอยู่)

ดังนั้นทำไมลูกค้าและเซิร์ฟเวอร์ไม่สามารถตัดสินใจว่าจะใช้รหัสใดโดยไม่ต้องมีคำแนะนำที่ชัดเจน ลูกค้าเข้าใจว่าเซิร์ฟเวอร์นั้นรองรับaes256-cbcลูกค้าเข้าใจว่าเขาสามารถใช้มันเองทำไมไม่ใช้มันล่ะ?

หมายเหตุเพิ่มเติมบางส่วน:

UPDATE: แก้ไขปัญหาแล้ว

ตามที่ telcoM อธิบายว่าปัญหาเกิดขึ้นกับเซิร์ฟเวอร์: มันแนะนำเฉพาะอัลกอริธึมการเข้ารหัสที่ล้าสมัย ฉันแน่ใจว่าทั้งไคลเอนต์และเซิร์ฟเวอร์ไม่ล้าสมัย ผมได้เข้าสู่ระบบเซิร์ฟเวอร์ (โดยวิธีการที่มัน Synology, การปรับปรุงเพื่อให้รุ่นล่าสุดที่สามารถใช้ได้) /etc/ssh/sshd_configและการตรวจสอบ บรรทัดแรก (!) ของไฟล์นี้คือ:

Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

นี่เป็นสิ่งที่แปลกมาก (ความจริงที่ว่าบรรทัดเป็นไฟล์แรกในไฟล์) ฉันแน่ใจว่าฉันไม่เคยได้สัมผัสกับไฟล์มาก่อน อย่างไรก็ตามฉันได้เปลี่ยนบรรทัดเป็น:

Ciphers aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

รีสตาร์ทเซิร์ฟเวอร์ (ไม่ทราบวิธีการเริ่มsshdบริการเท่านั้น) และตอนนี้ปัญหาหายไป: ฉันสามารถ ssh ไปยังเซิร์ฟเวอร์ได้ตามปกติ


1
ที่เกี่ยวข้อง - unix.stackexchange.com/questions/333728/… - แสดงข้อมูลเกี่ยวกับวิธีปิดการใช้งาน
slm

3
ฉันพบปัญหาเดียวกันและพบว่าคุณสามารถเปลี่ยนสิ่งนี้ได้อย่างง่ายดายในเว็บอินเตอร์เฟส (เนื่องจาก ssh ใช้งานไม่ได้สำหรับฉัน ... ) แต่ไปที่ "Terminal -> การตั้งค่าขั้นสูง" ในแผงควบคุม DSM แล้วเลือก โปรไฟล์ "สูง" - ด้วยเหตุผลบางอย่างฉันเปิดใช้งานการเลือกด้วยตนเองที่นั่น ... ฉันแน่ใจว่าหวังว่าเป็นสิ่งที่ฉันทำและลืมและไม่ใช่สิ่งที่ทำโดยการอัปเดต DSM ก่อนหน้า! - ตัวเลือกตอนนี้ aes128-ctr, aes128-gcm, aes192 *, aes256 *, dhge-sha256, เส้นโค้ง 25519-sha256, hmac-sha2-256
Zak

คำตอบ:


16

-cbcขั้นตอนวิธีการได้เปิดออกมาเป็นความเสี่ยงที่จะมีการโจมตี ดังนั้นเวอร์ชันล่าสุดของ OpenSSH จะปฏิเสธอัลกอริธึมเหล่านั้นตามค่าเริ่มต้น: สำหรับตอนนี้จะยังคงมีให้ใช้งานหากคุณต้องการ แต่ตามที่คุณค้นพบคุณจะต้องเปิดใช้งานอย่างชัดเจน

เริ่มแรกเมื่อค้นพบช่องโหว่ (ปลายปี 2551 เกือบ 10 ปีที่แล้ว!) อัลกอริธึมเหล่านั้นถูกวางไว้ที่ท้ายสุดของรายการลำดับความสำคัญเพื่อความเข้ากันได้ แต่ตอนนี้การคัดค้านใน SSH ได้มาถึงขั้นตอน ปิดใช้งานโดยค่าเริ่มต้น ตามคำถามนี้ใน Cryptography.SEขั้นตอนการคัดค้านได้เกิดขึ้นแล้วในปี 2014

โปรดพิจารณาสิ่งนี้เป็นคำเตือนที่อ่อนโยนเพื่ออัปเดตเซิร์ฟเวอร์ SSH ของคุณหากเป็นไปได้ (หากเป็นการติดตั้งโดยใช้เฟิร์มแวร์ดูว่ามีเฟิร์มแวร์อัพเดตสำหรับฮาร์ดแวร์ของคุณหรือไม่)


2

คุณสามารถอัพเดตการกำหนดค่า ssh ของคุณได้จากไฟล์ที่อยู่ที่: / etc / ssh / ssh_config

  1. เรียกใช้เทอร์มินัล
  2. วางบรรทัดลงในเทอร์มินัล: sudo nano /etc/ssh/ssh_config
  3. ใส่รหัสผ่านของคุณ กดปุ่มตกลง. ไฟล์ SSH config จะปรากฏขึ้น
  4. เลิกแสดงความคิดเห็นบรรทัด: Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
  5. Ctrl + Xกด กด Enter เพื่อบันทึกและออก

1

สร้างไฟล์ภายใน ~ / .ssh / config และวางเนื้อหาด้านล่าง

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