Saya telah menggunakan koneksi SSH berbasis PKI selama lebih dari 10 tahun. Tiba-tiba, setelah pembaruan server - beberapa koneksi berhenti berfungsi. Saya menggunakan kunci PKI yang sama yang telah saya gunakan selama bertahun-tahun (setiap server memiliki kunci sendiri, saya memiliki satu set kunci pribadi kecil).
Bekerja - terlihat seperti ini:
C:\Users\michael>ssh2 -p 2222 [email protected] date
Authentication successful.
Fri Nov 25 10:30:42 2016
Tidak berfungsi seperti:
C:\Users\michael>ssh2 [email protected] date
warning: Authentication failed.
Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.).
Apa yang berubah?
Jawaban:
Setelah pembaruan - efek samping mungkin ikut berperan. Dengan OpenSSH - standar sering berubah. OpenBSD (yang memelihara / mengembangkan OpenSSH) memiliki kebijakan OpenBSD untuk tidak khawatir tentang kompatibilitas ke belakang. Ini bisa 'mematahkan' hal-hal yang, baca dulu, bekerja dengan baik.
Ada petunjuk besar - bahwa saya tidak melihat ketika ini pertama kali terjadi pada saya (menggunakan antarmuka GUI, dan saya hanya mengkliknya dan 'marah' dengan 'pembaruan bodoh - versi baru rusak'. Ternyata versi baru tidak rusak - tetapi OpenBSD / OpenSSH mulai mengubah default pertukaran kunci yang dimulai dengan OpenSSH-6.7p1 lihat: http://www.openssh.com/txt/release-6.7 , khususnya:
Masalah saya adalah saya memiliki klien lama yang tidak memiliki default baru, sehingga tidak dapat terhubung.
Dua jalur solusi: memperbaiki / menambal server atau - memperbaiki / menambal klien.
Solusi server: kembalikan pengaturan "lama" agar klien "lama" dapat terus terhubung, - ramah kepada klien yang ada - mengedit file sshd_config dan menambahkan kembali (cukup) dari sandi lama.
Baris kunci untuk mengubah / menambahkan sshd_config adalah:
Cukup tambahkan:
Solusi # 2 - memperbaiki / mengganti klien
Cara mudah untuk melihat cipher apa yang Anda dukung klien saat ini (dengan asumsi CLI)
ssh -h
dan lihat apakah itu menyediakan sesuatu seperti:Perintah lain yang bermanfaat adalah:
ssh -V
Milik saya - adalah - klien yang sangat lama - untuk desktop saya. Melihat di atas Anda dapat melihatnya tidak mendukung salah satu dari - 15 tahun kemudian - algoritma yang disukai, bahkan tidak satu-cbr (berputar), hanya -cbc (blok-copy).
Jika klien Anda tidak memiliki opsi untuk menyediakan kunci, dll. Yang didukung (OpenSSH seharusnya memiliki opsi
-Q
) mulai saja koneksi ke diri Anda sendiri, mis.,ssh -v localhost
Dan ada garis-garis seperti ini untuk memberi tahu Anda apa yang diketahui:Dan apa yang ditemukan (dan digunakan):
Ekstra: info debug dari koneksi yang gagal - detail lebih lanjut
Atau, apa yang sudah dicoba, tetapi luput.
Sunting: ditambahkan 02-Januari-2017
Bagian Baru - bagaimana dengan kunci yang berhenti berfungsi?
Di server saya, saya memiliki klien 'lama' dan klien 'terbaru' terinstal - dan mendapatkan perilaku berbeda yang terhubung ke server. Di sini masalahnya bukan ketidakcocokan cipher - tetapi penggunaan pasangan PKI kuno - berdasarkan DSA.
Singkatnya, openssh-7 (.3) tidak lagi mengirim (secara default, mungkin tidak sama sekali) kunci publik DSA.
Di bawah ini saya membandingkan output dari dua versi openssh
/ usr / bin / ssh (versi lama, sisi kiri) dan
/ opt / bin / ssh (versi baru, sisi kanan) - perintahnya adalah:
Saat Anda memindai melalui output di bawah ini, saya harap Anda memperhatikan langkah-langkah dan pesan-pesan pada umumnya sama. Perbedaan utama muncul setelah string SSH2_MSG_SERVICE_ACCEPT
Yang saya ingin Anda perhatikan adalah bahwa versi lama menawarkan (dan diterima oleh server 'lama' - pasangan kunci berbasis DSA sementara server baru tidak pernah menawarkan kunci berbasis DSA.
Catatan: 'solusi' untuk ini adalah menambahkan (setidaknya satu dari) pasangan rsa, ecdsa, atau pasangan PKI berbasis ed25519.
sumber
ssh2
jika mereka mau menerima saya - terutama untuk kemudahan melakukanscp
transfer dari jendela yang sama denganssh