SSH DSA anahtarları artık şifresiz kimlik doğrulaması için çalışmıyor


25

Fedora 23'e yükselttikten sonra, şifresiz (genel anahtar tabanlı) kimlik doğrulama artık SSH'de çalışmıyor: SSH'yi bazı ana bilgisayarlara çalışırken, uzak ana bilgisayardaki şifremi ister. SSH özel anahtarımı kullanamıyorum. Her şey Fedora 22 ile iyi çalıştı.

Genel anahtarım bir DSA anahtarı ( ~/.ssh/id_dsa.pub). OpenSSH 7.1 ( openssh-7.1p1-5.fc23.x86_64) kullanıyorum.

Parolasız kimlik doğrulamanın tekrar doğru şekilde çalışmasını nasıl sağlayabilirim?



1
Thanks, @ dave_thompson_085. Bu bir superuser.com/q/962918/93541 kopyası değildir . Bu soru nasıl kullanılacağını soruyor ssh -Q. Bu, SSH arızasında nasıl sorun yaşanacağını soruyor. Malzemenin bir kısmını superuser.com/q/962918/93541 adresinde ve bu çözümün tanımlanmasında başka bir yerde buldum , ancak buradaki cevap nasıl kullanılacağını açıklar ssh -Qve bu soruyu nasıl cevaplamaz (örneğin, nasıl düzeltileceğini açıklamaz) bu sorun), bu yüzden benim görüşüme göre bir dup değil. Unix ve Linux üzerinde bir olduğunu çok benzer; Keşke bunu daha önce görseydim. Bağlantılar için tekrar teşekkürler!
DW

Ack, haklısın. Her ikisine de, eski vakada yeterince yakın olmayan "OpenSSH 7.0 no DSA" olarak yer verdim. Üzgünüm.
dave_thompson_085

Yanıtlar:


40

Bu OpenSSH 7.0'a yükseltmenin bir sonucudur. OpenSSH 7.0 sürüm notlarında belirtildiği gibi , "ssh-dss ana bilgisayarı ve kullanıcı anahtarları için destek çalışma zamanında varsayılan olarak devre dışı bırakılmıştır".

Çözüm, ~/.ssh/configher istemci makineye (SSH istemcisini çalıştırdığınız her makine) aşağıdaki satırı eklemektir :

PubkeyAcceptedKeyTypes=+ssh-dss

Sunucu OpenSSH 7.0 veya daha yeni kullanıyor ise, edeceğiz de bu satırı ekleyin gerekir /etc/ssh/sshd_configher sunucu makinesinde.

Alternatif olarak, tamamen yeni bir SSH anahtarı oluşturabilir ve giriş yapmak istediğiniz her sunucuda yetkili_keyler dosyanıza ekleyebilirsiniz. Uyumluluk sıkıntılarını önlemek için RSA kullanmanızı öneririm . ECDSA'yı önermiyorum, görünüşe göre gnome-keyring-daemon, otomatik olarak ECDSA tipi SSH anahtarlarını almıyor.


Editoryal açıklama: OpenSSH milleti neden DSA anahtarlarını devre dışı bıraktı? Bilmiyorum. Belirleyebildiğim kadarıyla DSA anahtarlarının (ssh-dss) güvenliğinde yanlış bir şey yok. OpenSSH web sayfası ssh-dss zayıftır, ama bildiğim kadarıyla farkındayım olarak, 1024 bitlik ssh-dss 1024 bitlik RSA daha zayıf olduğunu ve 1024 bitlik RSA anahtarları engelli olmadıklarını iddia ediyor.


1
Anahtar türü seçimi bir süre Güvenlik'te tartışılmaktadır . DSA anahtarlarının güvenliği, en başından beri sorgulanabilir ve iyi rastgele bir jeneratörünüz yoksa (emin olamayacağınız) daha az güvenlidir. Ve şimdi kullanılması muhtemel başka anahtar tipleri de olduğundan, sorgulanabilir olanları korumak için hiçbir neden yoktur.
Jakuje

2
@ Jakuje, evet, anahtar türü seçimi Bilgi Güvenliği'nde burada ve burada tartışılıyor . Editörüm sözlerini yazmadan önce hepsini okudum ve DSA anahtarlarının neden devre dışı bırakıldığına şaşkınlık duyuyorum: aynı uzunlukta RSA anahtarlarından daha zayıf değiller, devre dışı bırakılmadılar. Bu konuların hiçbirinde DSA'nın "sorgulanabilir" olduğunu gösteren hiçbir şey yoktur ve Thomas Pornin'ın dediği gibi, "yeterince büyük anahtarlar varsayarak, bir türü diğerinden daha fazla seçmek için güvenlikle ilgili bir neden yoktur". (devamı)
DW

Daha ayrıntılı bir tartışma için buraya bakınız .
DW

0

Benim iki Sentim

Buna .ssh/configizin vermek için dosyayı düzenlemek çok iyi bir fikir gibi görünmüyor

  1. Son aracı kullanarak yeni bir anahtar oluşturun.

    Ardından yeni genel anahtarı kopyalayın (klipbordda)

  2. Eski anahtarı kullanarak son bir kez giriş yapın :

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

    Sonra yükseltme @host'ın authorized_keysyeni ekleyerek dosyayı, pubkey ve logoutu

    cat >>.ssh/authorized_keys
    

    paste, sonra Ctrl+D

  3. Varsayılan sözdizimini kullanarak yeni anahtarla giriş yapın:

    ssh user@host
    
    1. Sonra yükseltme @host'ın authorized_keystarafından, dosyayı çıkarmadan sana eski pubkey (kullandığım sed -e 1d -i .ssh/authorized_keyseski pubkey hattı üzerinde olduğu zaman 1bu dosyanın).

    2. Mümkünse ssh sunucunuzu yükseltmenizi öneririz.

    3. çıkış Yap
  4. Eski anahtarın artık işe yaramadığını test edin.

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

    Bu çalışmak zorunda değil ;-)

  5. Her şeyin yolunda olup olmadığını tekrar kontrol edebilirsiniz:

    ssh user@host uptime
    

Düzenlemenin neden ~/.ssh/configbu kadar iyi bir fikir olmadığını düşündüğün benim için açık değil.
DW,

Çünkü bu kullanımdan kaldırılmıştır ve ssh yazarı kullanılmamasını tavsiye eder. Bkz openssh.com/legacy.html
F. Hauri

Ah, anlıyorum. Endişelenmeniz, ~/.ssh/configkendi başına düzenleme fikriyle değil, DSA'ya izin verme fikriyle olduğu gibi. Açıkladığınız için teşekkürler. Bu mantıklı. (Sanırım cevabımı ve yorumlarımı neden bu öneriyi şaşırtıcı bulmaya
DW

Düzenleme .configyapmak ssh, uzun süre çalışmanızı sağlar ve hatta zayıf algoritmalar kullandığınızdan bile sisleme yapar . Kullanarak -o Pubkey...komut satırına, bunu affetmeyecek yükseltmek için bir şey .
F. Hauri,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.