ฉันพยายามที่จะ 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
ลูกค้าเข้าใจว่าเขาสามารถใช้มันเองทำไมไม่ใช้มันล่ะ?
หมายเหตุเพิ่มเติมบางส่วน:
ไม่มีปัญหาดังกล่าวบางครั้ง (ประมาณหนึ่งเดือน) ที่ผ่านมา ฉันไม่ได้เปลี่ยนไฟล์การกำหนดค่า ssh ใด ๆ ตั้งแต่นั้นมา ฉันได้อัปเดตแพ็คเกจที่ติดตั้งแล้ว
มีคำถามที่อธิบายถึงปัญหาที่คล้ายกันมาก แต่ไม่มีคำตอบสำหรับคำถามของฉัน: ssh ไม่สามารถต่อรองได้ - ไม่พบวิธีการแลกเปลี่ยนคีย์ที่ตรงกัน
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 ไปยังเซิร์ฟเวอร์ได้ตามปกติ