Kunci SSH DSA tidak lagi berfungsi untuk otentikasi tanpa kata sandi


25

Setelah memutakhirkan ke Fedora 23, otentikasi tanpa kata sandi (berbasis kunci publik) tidak lagi berfungsi di SSH: ketika mencoba SSH ke beberapa host, itu meminta kata sandi saya di host jarak jauh. Saya tidak bisa menggunakannya untuk menggunakan kunci pribadi SSH saya. Semuanya bekerja dengan baik dengan Fedora 22.

Kunci publik saya adalah kunci DSA ( ~/.ssh/id_dsa.pub). Saya menggunakan OpenSSH 7.1 ( openssh-7.1p1-5.fc23.x86_64).

Bagaimana cara saya mendapatkan otentikasi tanpa kata sandi untuk bekerja dengan benar lagi?



1
Terima kasih, @ dave_thompson_085. Ini bukan tipuan dari superuser.com/q/962918/93541 . Pertanyaan itu menanyakan bagaimana cara menggunakannya ssh -Q. Ini menanyakan bagaimana cara mengatasi masalah kegagalan SSH. Saya memang menemukan beberapa materi di superuser.com/q/962918/93541 dan di tempat lain membantu mengidentifikasi solusi ini, tetapi jawaban di sana menjelaskan cara menggunakan ssh -Qdan tidak menjawab pertanyaan ini (misalnya, itu tidak menjelaskan cara memperbaikinya masalah ini), jadi menurut saya itu bukan dup. Yang di Unix & Linux adalah sangat mirip; Saya berharap saya pernah melihatnya sebelumnya. Terima kasih lagi untuk tautannya!
DW

Ack, kamu benar. Saya memiliki mereka berdua ditandai sebagai "OpenSSH 7.0 no DSA" yang dalam kasus sebelumnya tidak cukup dekat. Maaf.
dave_thompson_085

Jawaban:


40

Ini adalah hasil dari peningkatan ke OpenSSH 7.0. Seperti yang dirilis oleh catatan rilis untuk OpenSSH 7.0 , "Dukungan untuk host ssh-dss dan kunci pengguna dinonaktifkan secara default saat run-time".

Solusinya adalah dengan menambahkan baris berikut ~/.ssh/configpada setiap mesin klien (setiap mesin tempat Anda menjalankan klien SSH):

PubkeyAcceptedKeyTypes=+ssh-dss

Jika server menggunakan OpenSSH 7.0 atau yang lebih baru, Anda juga perlu menambahkan baris ini /etc/ssh/sshd_configdi setiap mesin server.

Atau, Anda dapat membuat kunci SSH yang sama sekali baru dan menambahkannya ke file otor_keys Anda di setiap server yang ingin Anda masuki. Saya sarankan Anda menggunakan RSA , untuk menghindari masalah kompatibilitas. Saya tidak merekomendasikan ECDSA, karena rupanya gnome-keyring-daemon tidak secara otomatis mengambil kunci SSH dari tipe ECDSA.


Komentar editorial: Mengapa orang OpenSSH menonaktifkan kunci DSA? Saya tidak tahu Sejauh yang saya bisa memastikan, tidak ada yang salah dengan keamanan kunci DSA (ssh-dss). The OpenSSH halaman web klaim bahwa ssh-DSS lemah, tetapi sejauh yang saya tahu, 1024-bit ssh-DSS tidak lemah dari 1024-bit RSA, dan kunci RSA 1024-bit yang tidak cacat.


1
Pemilihan jenis kunci dibahas pada Keamanan untuk beberapa waktu. Keamanan kunci DSA dipertanyakan sejak awal dan kurang aman jika Anda tidak memiliki generator acak yang baik (yang tidak dapat Anda pastikan). Dan karena sekarang ada jenis kunci lain yang mungkin digunakan, tidak ada alasan untuk mempertahankan yang dipertanyakan.
Jakuje

2
@ Jakuje, ya, pemilihan jenis kunci dibahas tentang Keamanan Informasi di sini dan di sini . Saya membaca semua itu sebelum menulis komentar editorial saya, dan saya tetap bingung mengapa kunci DSA dinonaktifkan: mereka tidak lebih lemah dari kunci RSA dengan panjang yang sama, yang tidak dinonaktifkan. Tidak ada di utas mana pun yang menunjukkan DSA "dipertanyakan", dan seperti yang dikatakan Thomas Pornin, "tidak ada alasan terkait keamanan untuk memilih satu jenis daripada yang lain, dengan asumsi kunci yang cukup besar". (lanjutan)
DW

Lihat di sini untuk diskusi lebih rinci.
DW

0

Dua sen saya

Karena mengedit .ssh/configfile untuk mengizinkan ini tampaknya bukan ide yang bagus , saya sarankan

  1. Buat kunci baru, dengan menggunakan alat terbaru.

    Kemudian salin kunci publik baru (ke clipbord)

  2. Log terakhir kali dengan menggunakan kunci lama:

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@host
    

    Kemudian upgrade @host's authorized_keysberkas, dengan menambahkan baru Anda pubkey dan logout

    cat >>.ssh/authorized_keys
    

    paste, lalu Ctrl+D

  3. Log dengan kunci baru dengan menggunakan sintaks default:

    ssh user@host
    
    1. Kemudian upgrade @host's authorized_keysberkas, dengan menghapus Anda berusia pubkey (saya menggunakan sed -e 1d -i .ssh/authorized_keysketika pubkey lama saya adalah pada baris 1dari file ini).

    2. Saya sarankan untuk memperbarui server ssh Anda jika Anda bisa.

    3. keluar
  4. Uji apakah kunci lama tidak berfungsi lagi.

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@host
    ...
    Permission denied...
    

    Ini tidak harus bekerja ;-)

  5. Anda bahkan dapat memeriksa ulang apakah semuanya baik-baik saja:

    ssh user@host uptime
    

Tidak jelas bagi saya mengapa Anda berpikir mengedit itu ~/.ssh/configbukan ide yang bagus.
DW

Karena ini sudah usang dan ssh menyarankan penulis untuk tidak menggunakan. Lihat openssh.com/legacy.html
F. Hauri

Oh saya mengerti. Sepertinya kekhawatiran Anda bukan pada gagasan mengedit ~/.ssh/configsemata, melainkan dengan gagasan mengizinkan DSA. Terima kasih telah menjelaskan. Itu masuk akal. (Saya pikir saya sudah membahas jawaban saya dan komentar saya mengapa rekomendasi itu membingungkan, tetapi saya tidak akan mencoba memperdebatkannya di sini.)
DW

Mengedit .configmembuat Anda dapat melakukan sshuntuk waktu yang lama dan bahkan kabut bahwa Anda menggunakan algoritma yang lemah . Dengan menggunakan -o Pubkey...pada baris perintah, Anda tidak akan memaafkan ada sesuatu untuk ditingkatkan .
F. Hauri
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.