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 [email protected]

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?
gatorback
sumber
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 [email protected]

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.

Kalle Elmér
sumber
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.

truxpin
sumber
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.)

Dagelf
sumber
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 [email protected]
Dagelf