ssh tidak dapat dinegosiasikan - tidak ditemukan metode pertukaran kunci yang cocok

32

Saya mencoba masuk ke router DSL saya, karena saya mengalami masalah dengan surat baris perintah. Saya berharap dapat mengkonfigurasi ulang router.

Ketika saya memberikan sshperintah, inilah yang terjadi:

$ ssh [email protected]

Unable to negotiate with 10.255.252.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

jadi saya melihat posting stackexchange ini , dan memodifikasi perintah saya untuk ini, tapi saya mendapatkan masalah yang berbeda, kali ini dengan cipher.

$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 [email protected]

Unable to negotiate with 10.255.252.1 port 22: no matching cipher found. Their offer: 3des-cbc

jadi adakah perintah untuk menawarkan 3des-cbc enkripsi? Saya tidak yakin tentang 3des, seperti apakah saya ingin menambahkannya secara permanen ke sistem saya.

Apakah ada perintah untuk mengizinkan 3des-cbcsandi?

Apa masalah yang terjadi di sini? Itu tidak meminta kata sandi.

j0h
sumber
1
Mungkin sudah dijawab di sini
Eduardo Baitello
1
Ssh memiliki sejumlah algoritma enkripsi yang dapat digunakan, dan tidak ada yang umum antara klien Anda dan server. Coba gunakan ssh -o KexAlgorithms=diffe-hellman-group-sha1 [email protected]untuk memaksa klien Anda menggunakan algoritma yang lebih lama dan kurang aman, dan lihat apakah ada firmware yang lebih baru untuk router Anda.
icarus
1
ssh -vvv ...akan mengungkapkan semua protokol pertukaran kunci dan sandi yang ditawarkan oleh server.
David Foerster

Jawaban:

47

Kesalahan khusus ini terjadi saat saluran terenkripsi diatur. Jika sistem Anda dan sistem jarak jauh tidak berbagi setidaknya satu sandi, tidak ada sandi yang disetujui dan tidak ada saluran terenkripsi yang mungkin. Biasanya server SSH akan menawarkan sejumlah kecil cipher yang berbeda untuk melayani klien yang berbeda; Saya tidak yakin mengapa server Anda akan dikonfigurasi untuk hanya mengizinkan 3DES-CBC.

Sekarang, 3DES-CBC tidak buruk. Ini lambat, dan memberikan keamanan yang lebih sedikit daripada beberapa algoritma lainnya, tetapi tidak dapat segera dipecahkan asalkan kunci dipilih dengan benar. CBC sendiri memiliki beberapa masalah ketika ciphertext dapat dimodifikasi dalam perjalanan, tetapi saya sangat curiga bahwa korupsi yang dihasilkan akan ditolak oleh HMAC SSH, mengurangi dampak. Intinya, ada pilihan yang lebih buruk daripada 3DES-CBC, dan ada yang lebih baik. Namun, selalu melangkah dengan hati-hati ketika mengabaikan default terkait keamanan, termasuk pilihan algoritma cipher dan pertukaran kunci.Standarnya adalah default karena suatu alasan; beberapa orang yang cukup pintar menghabiskan sejumlah kekuatan otak dengan mempertimbangkan opsi-opsi dan menetapkan bahwa apa yang dipilih sebagai standar memberikan keamanan keseluruhan terbaik dibandingkan pertukaran kinerja.

Saat Anda tahu, Anda dapat menggunakan -c ...(atau -oCiphers=...) untuk menentukan sandi mana yang ditawarkan dari sisi klien. Dalam hal ini menambahkan -c 3des-cbchanya memungkinkan 3DES-CBC dari klien. Karena ini cocok dengan sandi yang ditawarkan server, saluran terenkripsi dapat dibuat dan koneksi berlanjut ke tahap otentikasi.

Anda juga dapat menambahkan ini ke pribadi Anda ~/.ssh/config. Untuk menghindari membuat perubahan global untuk memecahkan masalah lokal, Anda bisa memasukkannya ke dalam Hostbait. Misalnya, jika konfigurasi SSH Anda saat ini mengatakan (contoh dummy):

Port 9922

dengan menentukan port default global 9922 alih-alih default 22, Anda dapat menambahkan bait host untuk host yang membutuhkan konfigurasi khusus, dan bait host global untuk case default. Itu akan menjadi sesuatu seperti ...

Host 10.255.252.1
    Ciphers 3des-cbc
    KexAlgorithms +diffie-hellman-group1-sha1
Host *
    Port 9922

Lekukan itu opsional, tetapi saya merasa sangat meningkatkan keterbacaan. Garis kosong dan garis yang dimulai dengan #diabaikan.

Jika Anda selalu (atau sebagian besar) masuk sebagai pengguna yang sama pada sistem itu, Anda juga dapat menentukan nama pengguna itu:

Host 10.255.252.1
    Ciphers 3des-cbc
    KexAlgorithms +diffie-hellman-group1-sha1
    User enduser
Host *
    Port 9922

Anda tidak perlu menambahkan Host *bait jika tidak ada ~ ~ .ssh / config Anda untuk memulainya, karena dalam hal ini hanya kompilasi-in atau standar seluruh sistem (biasanya dari / etc / ssh / ssh_config) akan menjadi bekas.

Pada titik ini, baris perintah ssh untuk terhubung ke host ini berkurang menjadi sederhana

$ ssh 10.255.252.1

dan semua pengguna lain di sistem Anda, dan koneksi ke semua host lain dari sistem Anda, tidak terpengaruh oleh perubahan.

sebuah CVn
sumber
Dalam kasus saya, saya harus menghapus Ciphergaris, tetapi kemudian berhasil! Terima kasih!
carlspring
Menurut halaman manual ssh_config ( tautan ) sintaks file config untuk cipher adalah "Cipher s " (perhatikan trailing s).
MikeV
28

Ok saya membaca halaman manual dan menemukan jawabannya.

Saya tidak ingin memodifikasi file konfigurasi saya, jadi saya mencari istilah "cipher" di halaman manual yang menunjukkan kepada saya -copsi; ini memungkinkan saya untuk menentukan jenis enkripsi. perintah akhirnya adalah:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c 3des-cbc [email protected]
j0h
sumber
4
Hati-hati memilih cipher dengan tangan, Anda bisa dengan mudah memilih yang lemah (er) kecuali Anda tahu apa yang Anda lakukan (usability et. Al.).
heemayl
Ditto @heemayl. 3DES-CBC tidak terlalu buruk, tetapi ada cipher yang didukung setidaknya oleh versi OpenSSH terbaru yang untuk semua maksud dan tujuan benar-benar rusak. Tapak dengan hati-hati.
CVn
3

Saya baru-baru ini mengalami masalah ini menggunakan Putty untuk terhubung ke versi Ubuntu yang lebih baru. Tampaknya versi Putty sebelumnya tidak memiliki sandi yang diperbarui. Jadi mengunduh versi terbaru dari Putty telah menyelesaikan masalah. Itu bisa menjadi solusi lain.

Trent Three
sumber
1
Meskipun seringkali router tidak diperbarui atau didukung dengan sangat baik oleh pabrikan.
Guy
0

Jawaban lain untuk comamnds MacOSX dan CLI (SFTP, misalnya): lihat artikel ini @ http://www.openssh.com/legacy.html (OpenSSL Legacy Options). Saya mendapatkan kesalahan konsisten "tidak dapat dinegosiasikan" yang diselesaikan dengan informasi dalam artikel ini, khususnya pengaturan parameter konfigurasi dalam file "~ / .ssh / config".

BTW, saya mendapatkan kesalahan ini ketika server SFTP tujuan saya (tidak di bawah administrasi saya) akhirnya mematikan TLS 1.0 (opsi enkripsi SSL) dan memerlukan TLS 1.1 atau 1.2.

Charlie L.
sumber