SSH'yi ECDSA yerine RSA anahtarı vermeye nasıl zorlayabilirim?


16

Bir sunucuya ilk kez eriştiğinde, SSH'yi bana RSA anahtarını vermeye ve kullanıcı onayladığında otomatik olarak depolamaya nasıl zorlayabilirim?

Şu anda bana ECDSA anahtarı sunuyor. RSA anahtarını zaten bildiğim için, bu noktada sunulan RSA anahtarını görmeyi tercih ederim.

Denedim:

ssh -o RSAAuthentication=yes user@server

Ne yazık ki bu bana bir ECDSA anahtarı ve Are you sure you want to continue connecting (yes/no)?mesaj veriyor .


Ben de benzer bir durum var. Sunucu A. İstemci B. B'de: ssh A önce anahtarı isteyecektir. Cleint C: ssh A önce sizden passwrd isteyecektir, bir başarısızlıktan sonra C istemcisinin ECDSA anahtarını kullanma girişimi başarısız olursa, bunu A'nın günlüğünde gördüm. C'ye rsa anahtarını önceden yüklersem, ssh A mutlu bir şekilde bağlanır . C'nin ilk denemede ECDSA anahtarını kullanmasını nasıl önleyebilirim?
Kemin Zhou

Yanıtlar:


14

ECDSA algoritmalarını HostKeyAlgorithmsyapılandırma değişkeninden kaldırarak .

ssh -o HostKeyAlgorithms=ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss user@server

Tüm ECDSA algoritmalarını varsayılan listeden kaldırdım .

Tabii ki, bunu .ssh/configo makineye koyabilirsiniz :

Host: server
    HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss

OpenSSL için, 1) ana makineden sonra iki nokta üst üste işareti yoktur ve 2) bunu yayınladığınızdan beri varsayılan liste değişmiş gibi görünüyor. HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-rsaBunun yerine deneyin .
cowlinator

6

ECDSA yeni varsayılan ayar olduğundan RSA kullanmayın.

Sunucuda şunu yapın: ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub ve bu numarayı kaydedin.

İstemcide ana bilgisayara SSH gönderebilirsiniz ve aynı numarayı görürseniz ve gördüğünüzde, soruyu doğru olarak cevaplayabilirsiniz Are you sure you want to continue connecting (yes/no)?. Daha sonra ECDSA anahtarı ileride kullanılmak üzere istemciye kaydedilecektir.


3
evet ama ecdsa güncellemek için bir iş kararı olana kadar uyumluluğu sağlamak için RSA'ya ihtiyaç duyan eski bir uygulamam varsa ne olur?
enthusiasticgeek

@ RobertSiemer sadece orijinal soru posteri kabul edilen cevabı değiştirebilir. Bunu yapamıyorum.
enthusiasticgeek

1
H2ONaCl: lütfen kabul ettiğiniz cevabı değiştirin. Bu istediğini yapmaz. @enthusiasticgeek üzgünüm, karışıklık.
Robert Siemer

Temerrüt (otoriteye itiraz) ve yeni (yeniliğe itiraz) mutlaka daha iyi anlamına gelmez. RSA hala güçlü olarak kabul edilir ... Daha fazla güç istiyorsanız bitleri 4096'ya kadar çıkarın (2048 yakında eski olabilir). İyi bir EC algo istiyorsanız ed25519 kullanın. ECDSA berbat çünkü muhtemelen arka kapıları kapalı olan zayıf NIST eğrileri kullanıyor; bu bir süredir bilinen bir sorundur. Eski destek için RSA'yı etkinleştirin ve ideal bir algo için ed25519'u kullanın ... her zaman uzun eski olan DSA'yı devre dışı bırakın (büyük bir neden 1024 bit anahtar sabittir) ve ayrıca ECDSA'yı devre dışı bırakın. Daha fazla bilgi için ssh-audit'i deneyin.
Peter

5

Evet, yakında ECDSA'ya geçin, ancak bu arada şunu deneyin:

ssh -o HostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 user@example.com

Bu, sistemimdeki "Açık yapılandırma seçeneği: parmak izi biçimini" veriyor (OpenSSH_6.6.1p1).
Soren Bjornstad

1
@SorenBjornstad, FingerprintHashseçenek gereksiz, sadece tüm parçayı kapalı bırakın.
Lucas

2

Bu satırı yeni ekledim

HostKeyAlgorithms ssh-rsa

için

/etc/ssh/sshd_conf

ve bu sürümde iyi çalışıyor.

OpenSSH_7.7p2 ubuntu-4ubuntu2.2

1

Sadece eski algoritma listesini bulmak için içinde ölü bir bağlantı olan tumbleweed'in cevabını iyileştirmek için.

İlk önce bir algoritma listesine karar verin. Eski listeyi bulmak için şunu kullanın ssh -vv:

ssh -vv somehost

Birincisi sunucunun teklifi, ikincisi ise müşterinin teklifi olmak üzere "host key algoritmaları: ..." gibi 2 satırı arayın. Veya bu 2 satırı otomatik olarak seçmek için şunu deneyin (ve ctrl + d tuşlarından çıkmak için):

ssh -vv somehost 2>&1 | grep "host key algorithms:"

Şimdi filtreleyin ... tüm dss / dsa'ları uzun süredir kullanılmadıkları için kaldırmalısınız ve ayrıca ecdsa'yı (bende olduğu gibi) kaldırmak istediniz, örneğin:

ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Şununla bitirmelisiniz:

ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Şimdi yapılandırmanızı düzenleyin. Kendi yapılandırmanız için:

vim ~/.ssh/config

Sistem genelindeki yapılandırma için:

sudo vim /etc/ssh/ssh_config

Global olarak yeni bir satır ekleyin:

HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

veya belirli bir ana bilgisayar için (sunucu çapında yapılandırma için ideal değildir):

Host somehost
    HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Girdiğim liste yerine, ssh -vvçıktıdan türettiğiniz listeyi "ana bilgisayar anahtar algoritmaları:" bölümünü içermeden yapıştırın .


0

bazı noktalar mevcut varsayılanlardan anahtar algoritmaları kaldırmak mümkün olduğu kadar kafa karıştırıcı - En yüksek seviye anahtarları ssh-keygen -t ras -a -b 4096 -a 113 kullanarak en iyi güvenlik için Yeni RSA-sha2 / 256/512 ve ed25519 anahtarlarıdır gen. Eski destek, ssh1'in tamamen kaybolacağı ssh haberlerini okuyor - 45 bit ve 96 bit maksimum - dsa anahtarları da amortismana tabi tutuluyor. 128/1024 bit maksimum sabitlendi hacklenebilir bulundu. (poss NSA bunu yaptı ve hata ayıklama kodu olarak topal / mazeret, isimlendirmenin önemsiz olduğundan şüphe duyuyor), bu nedenle yüksek standartlar ödeyen güvenli RSA anahtar yapılarının daha yüksek standartları desteklemek ve devam ettirmek için yeniden çalışması gerekiyor. / etc / ssh / sshd_config içinde açıklandığı gibi kullanmak istediğiniz tuşları ayarlayın 2 anahtar yetkilendirme 3 anahtarını da deneyin. örn: sshd_config "AuthenticationMethods publickey, publickey, publickey" - ssh -Q kex listelerinin hem A hem de B sunucuları veya masaüstleri ile eşleştiğinden emin olun, örneğin çıktılarında bir fark var - ve aynı anahtar çıkış algoritmalarının eşleştiğinden emin olun. üretimde yeni ecdsa anahtarları da kina zayıf sugg kullanmamaktır. veya get - keyexchange kısmi erişimi güvenli msj reddetti. İyi infoz bir sürü sadece aramak için sabırlı.


2
Takip etmek daha kolay olması için bu metin duvarını parçalamaya çalışabilir misiniz? Lütfen biçimlendirme kılavuzunu kullanın ve kodu ve metin dosyası içeriğini kod olarak biçimlendirin ve işleri daha net hale getirecekse, bunları kendi satırlarına yerleştirin. Eğer cevaplayabilirsem cevabınızı kendim mutlu bir şekilde düzenlerdim ama yapamam.
Zanna

-5

Veya, RSA anahtarı yaklaşımında ısrarcıysanız, SSH'ye gitmek ssh-keygen -t rsaistediğiniz sunucuya yazabilirsiniz .

Bu, '~ / .ssh / id_rsa' altında RSA ortak ve özel anahtarları oluşturmalıdır. Şimdi yapmanız gereken tek şey, $HOME/.ssh/authorized_keysssh yapmak istediğiniz tüm makinelerin altındaki ortak anahtarı RSA anahtarlarınızı oluşturduğunuz makineye kopyalamaktır .

Sonra arkanıza yaslanın ve rahatlayın!


1
Sorunun istemci tarafı anahtarı değil, sunucu anahtarı ile ilgili olduğunu biliyor musunuz?
0xC0000022L
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.