Pengembalian SSH: tidak ditemukan jenis kunci host yang cocok. Tawaran mereka: ssh-dss


81

Saya terbiasa menggunakan Putty pada kotak Windows atau terminal baris perintah OSX ke SSH ke NAS, tanpa konfigurasi klien.

Ubuntu 16.04 mencoba SSH ke NAS (via 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. Apakah hasil / respons ini disengaja?
  2. Apakah ada koreksi sederhana yang memungkinkan akses SSH ke NAS?

Anda tidak memiliki .pemfile kunci privat SSH ( ) di mesin Windows Anda, bukan?
Android Dev

Tidak ada file .pem di kotak Windows
gatorback

1
NAS Anda tidak akan menjadi seri Western Digital EX-kan? :)
Adam Plocher

Ini adalah perangkat MyCloud: harapan yang entah bagaimana menjelaskan
gatorback

Jawaban:


139

Versi OpenSSH yang termasuk dalam 16.04 menonaktifkan ssh-dss. Ada halaman yang rapi dengan informasi lawas yang mencakup masalah ini: http://www.openssh.com/legacy.html

Singkatnya, Anda harus menambahkan opsi -oHostKeyAlgorithms=+ssh-dsske perintah SSH:

ssh -oHostKeyAlgorithms=+ssh-dss root@192.168.8.109

Anda juga dapat menambahkan pola host di Anda ~/.ssh/configsehingga Anda tidak perlu menentukan algoritma kunci setiap kali:

Host nas
  HostName 192.168.8.109
  HostKeyAlgorithms=+ssh-dss

Ini memiliki manfaat tambahan yang Anda tidak perlu mengetikkan alamat IP. Sebaliknya, sshakan mengenali tuan rumah nasdan tahu ke mana harus terhubung. Tentu saja Anda dapat menggunakan nama lain sebagai gantinya.


Saya percaya bahwa ini adalah solusi di sisi Ubuntu. Apakah ada opsi sederhana di sisi NAS? Akan menyenangkan untuk memahami semua opsi dan memanfaatkan kesempatan untuk mengeraskan segala kelemahan keamanan. Mungkin ini pertanyaan lain untuk utas lainnya? Penjelasan \ respons yang sangat bagus
gatorback

Apakah mungkin untuk mengatur ini secara global? Lihat IP wildcard? 0.0.0.0 tidak berfungsi
podarok

2
@podarok, cobaHost *
brownian

10

Mengedit file ~ / .ssh / config adalah opsi terbaik. Jika Anda memiliki sejumlah host untuk tersambung ke pada subnet yang sama, Anda dapat menggunakan metode berikut untuk menghindari memasukkan setiap host di file:

 Host 192.168.8.*
  HostKeyAlgorithms=+ssh-dss

Ini berfungsi baik bagi saya karena saya memiliki sejumlah sakelar Brocade untuk dikelola dan mereka mulai mengeluh tentang kunci Host setelah saya pindah ke Ubuntu 16.04.


6

Jika Anda ingin menggunakan OpenSSH yang lebih baru untuk terhubung ke server yang sudah usang:

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

Tambahkan -v jika Anda ingin melihat apa yang terjadi, dan -o HostKeyAlgorithms = ssh-dss jika masih tidak berfungsi:

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

Anda juga dapat, tentu saja, mengedit / etc / ssh / ssh_config atau ~ / .ssh / ssh_config, dan menambahkan:

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 menyebutkan perbaikan berikut pada Mikrotik Routerboards:

/ip ssh set strong-crypto=yes

(Memperhatikan hal ini di sini karena jawaban ini juga muncul pada pencarian web ketika mencari pesan kesalahan yang serupa.)


seharusnya -o KexAlgorithms = diffie-hellman-group1-sha1 (bukan 14)
dalf

Itu tergantung ... $ ssh -Q kex server diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh- sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256@libssh.org
Dagelf

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.