คืนค่า SSH: ไม่พบประเภทคีย์โฮสต์ที่ตรงกัน ข้อเสนอของพวกเขา: ssh-dss


81

ฉันคุ้นเคยกับการใช้ Putty บนกล่อง Windows หรือเทอร์มินัลบรรทัดคำสั่ง OSX เพื่อ SSH ไปเป็น NAS โดยไม่มีการกำหนดค่าไคลเอนต์

Ubuntu 16.04 พยายามที่จะ SSH เข้าสู่ NAS (ผ่าน LAN):

ssh root@192.168.8.109

Unable to negotiate with 192.168.8.109 port 22: no matching host key type found. Their offer: ssh-dss
  1. ผลลัพธ์ / การตอบสนองนี้ตั้งใจหรือไม่
  2. มีการแก้ไขอย่างง่าย ๆ ที่ช่วยให้ SSH สามารถเข้าถึง NAS ได้หรือไม่?

คุณไม่มี.pemไฟล์รหัสส่วนตัว SSH ( ) บนเครื่อง Windows ของคุณใช่ไหม?
Android Dev

ไม่มีไฟล์. pem ในกล่อง Windows
gatorback

1
NAS ของคุณจะไม่เกิดขึ้นกับ Western Digital EX-series ใช่หรือไม่ :)
Adam Plocher

มันเป็นอุปกรณ์ MyCloud: หวังว่าจะมีความชัดเจน
gatorback

คำตอบ:


139

รุ่นของ OpenSSH รวมอยู่ใน 16.04 ปิดการใช้งาน ssh-dss มีหน้าเว็บที่เรียบร้อยพร้อมข้อมูลดั้งเดิมที่มีปัญหานี้: http://www.openssh.com/legacy.html

สรุปคุณควรเพิ่มตัวเลือก-oHostKeyAlgorithms=+ssh-dssในคำสั่ง SSH:

ssh -oHostKeyAlgorithms=+ssh-dss root@192.168.8.109

คุณยังสามารถเพิ่มรูปแบบโฮสต์ได้~/.ssh/configดังนั้นคุณไม่จำเป็นต้องระบุอัลกอริทึมสำคัญทุกครั้ง:

Host nas
  HostName 192.168.8.109
  HostKeyAlgorithms=+ssh-dss

นี่เป็นข้อดีเพิ่มเติมที่คุณไม่จำเป็นต้องพิมพ์ที่อยู่ IP แต่sshจะจดจำโฮสต์nasและทราบว่าจะเชื่อมต่อกับที่ใด แน่นอนคุณสามารถใช้ชื่ออื่นแทนได้


ฉันเชื่อว่านี่เป็นวิธีแก้ปัญหาทางด้าน Ubuntu มีตัวเลือกง่าย ๆ ในฝั่ง NAS หรือไม่? เป็นการดีที่จะเข้าใจตัวเลือกทั้งหมดและคว้าโอกาสที่จะทำให้จุดอ่อนด้านความปลอดภัยแข็งแกร่งขึ้น อาจเป็นคำถามอื่นสำหรับเธรดอื่นได้หรือไม่ คำอธิบายที่ดีมาก \ response
gatorback

เป็นไปได้ไหมที่จะตั้งทั่วโลก? LIke wildcard IP? 0.0.0.0 ไม่ทำงาน
podarok

2
@podarok ลองHost *
Brownian

10

การแก้ไขไฟล์ ~ / .ssh / config เป็นตัวเลือกที่ดีที่สุด หากคุณมีโฮสต์จำนวนหนึ่งที่ต้องเชื่อมต่อกับเครือข่ายย่อยเดียวกันคุณสามารถใช้วิธีการต่อไปนี้เพื่อหลีกเลี่ยงการป้อนแต่ละโฮสต์ในไฟล์:

 Host 192.168.8.*
  HostKeyAlgorithms=+ssh-dss

สิ่งนี้ใช้งานได้ดีสำหรับฉันเนื่องจากฉันมีสวิตช์จำนวนหนึ่งสำหรับจัดการและพวกเขาเริ่มบ่นเกี่ยวกับรหัสโฮสต์หลังจากฉันย้ายไปยัง Ubuntu 16.04


6

หากคุณต้องการใช้ OpenSSH ที่ใหม่กว่าเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ที่เลิกใช้แล้ว:

ssh -o KexAlgorithms=diffie-hellman-group14-sha1 -oHostKeyAlgorithms=+ssh-dss my.host.com

เพิ่ม -v หากคุณต้องการดูว่าเกิดอะไรขึ้นและ -o HostKeyAlgorithms = ssh-dss หากยังไม่ทำงาน:

ssh -v -o HostKeyAlgorithms=ssh-dss -o KexAlgorithms=diffie-hellman-group14-sha1 my.host.com

นอกจากนี้คุณยังสามารถแก้ไข / etc / ssh / ssh_config หรือ ~ / .ssh / ssh_config และเพิ่ม:

Host my.host.com *.myinsecure.net 192.168.1.* 192.168.2.*
    HostKeyAlgorithms ssh-dss
    KexAlgorithms diffie-hellman-group1-sha1    

https://forum.ctwug.za.net/t/fyi-openssh-to-access-rbs-openssh-7/6069กล่าวถึงการแก้ไขต่อไปนี้บนเราเตอร์ Mikrotik:

/ip ssh set strong-crypto=yes

(การสังเกตที่นี่เพราะคำตอบนี้เกิดขึ้นกับการค้นหาเว็บเมื่อค้นหาข้อความแสดงข้อผิดพลาดที่คล้ายกัน)


มันควรจะเป็น -o KexAlgorithms = diffie-hellman-group1-sha1 (ไม่ใช่ 14)
dalf

นั่นขึ้นอยู่กับ ... $ ssh -Q kex เซิร์ฟเวอร์ diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman กลุ่มแลกเปลี่ยน -sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh- sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256@libssh.org
Dagelf

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