* Username * için çok fazla kimlik doğrulama hatası


256

Ssh erişimi etkin bir hostgator hesabım var. Bu komutla oluşturulan .pub anahtar dosyasını yüklemeye çalışırken:

rsync -av -e "ssh -p2222" /home/user/.ssh/key.pub username@111.222.33.44:.ssh/authorized_keys

Ben almaya devam ediyorum:

111.222.33.44: 2 bağlantısından bağlantı kesildi.: Kullanıcı adı için çok fazla kimlik doğrulama hatası
rsync: beklenmedik şekilde kapalı bağlantı (şimdiye kadar 0 bayt alındı) [gönderen]
rsync hatası: açıklanamayan hata (kod 255), io.c (601) [gönderen = 3.0.7]

Yetki başarısızlığını bulana kadar daha önce ssh ile oynuyordum. Fakat şimdi, kimlik doğrulama başarısızlık sayacının sıfırlanmadığı anlaşılıyor (şu anda 12 saatten fazla beklemekteyim, teknik destek 30 dakikadan 1 saate kadar sıfırlar ve başka bir adam bana "giriş yapmayı her denediğinde sıfırlar" demiştir. kullanıcı adı ", jeesh).

Bu beni deli ediyor. Bunu bir Slicehost özel sunucusunda bile kurmuştum ve bu adamlardan daha az sorun yaşadım.

Herhangi bir ipucu? Belki de sunucu tarafı değil müşteri tarafıdır.


Benim durumumda, anahtarın üretilmesinde bir hata var. Bir anahtar ürettim ve kaynak adresinden bahsetmeyi özledim ve anahtarın sonunda kullanıcı adını kullandım.
muhabir

Yanıtlar:


416

Bu genellikle istemeden sunucuya birden çok ssh anahtarının sunulmasından kaynaklanır . Sunucu, çok fazla anahtar önerildikten sonra herhangi bir anahtarı reddeder.

Ayrıntılı çıktı almak -viçin sshkomutunuza bayrak ekleyerek bunu kendiniz görebilirsiniz . Sunucu bağlantıyı reddedinceye kadar: "[kullanıcı] için çok fazla kimlik doğrulama hatası" diyen bir sürü anahtar teklif edildiğini göreceksiniz . Ayrıntılı mod olmadan, yalnızca belirsiz "Bağlantıyı eş tarafından sıfırlama" mesajını görürsünüz .

Alakasız anahtarların sunulmasını önlemek için, bunu ~/.ssh/config(istemci makinesindeki) dosyadaki her ana bilgisayar girişinde açıkça belirtmeniz IdentitiesOnlygerekir:

Host www.somehost.com
  IdentityFile ~/.ssh/key_for_somehost_rsa
  IdentitiesOnly yes
  Port 22

Eğer ssh-agent kullanıyorsanız, ssh-add -Dkimlikleri silmek için koşmaya yardımcı olur .

Herhangi bir ssh ana bilgisayar yapılandırması kullanmıyorsanız, komuttaki doğru anahtarı açıkça belirtmeniz sshgerekir:

ssh -i some_id_rsa -o 'IdentitiesOnly yes' them@there:/path/

Not: 'IdentitiesOnly yes' parametresinin tırnak işaretleri arasında olması gerekir.

veya

ssh -i some_id_rsa -o IdentitiesOnly=yes them@there:/path/

5
Bana bu çizgiyi nereye koyacağı belli değil. Giriş yapmaya çalıştığım sunucuda, .ssh / config yalnızca diğer sunucular için bilgiler içerir. Bunun, ssh denemeye çalıştığım bilgisayardaki .ssh / config dosyasına gitmesi gerektiğini mi söylüyorsunuz? Eğer öyleyse, bu belirsiz çünkü cevabınız "bir kez tekrar giriş yaptığınızda ..."
David LeBauer

2
Bu seçeneği şu şekilde çift tırnak işareti içine almak zorundayım:ssh -i some_id_rsa -o "IdentitiesOnly yes" them@there:/path/
knb

1
PAGENT (Putty Agent) kullanan Windows kullanıcıları, yalnızca yüklü olan anahtarlara sahip olduğunuzdan emin olmak için kontrol edin. Yanlışlıkla TÜM özel anahtarlarımı yükledikten sonra bu sorunla karşılaştım.
Chris Rasco

2
Sorun devam ediyor: neden ana bilgisayar kuralı açık bir ayara sahip olsa bile neden ssh"birden fazla anahtar sunuyor" (altında bir şey var ~/.ssh) IdentityFile /path/to/private_key_file. Bu açıkça belirtilen anahtar (en azından) önce teklif edilmemeli midir? Openssh istemcisindeki bir hata / yanlış özellik değil mi?
arielf

2
Fakat IdentityFileseçenekle belirtilen anahtarı kullanmamalı mı? Örneğin, IdentitiesOnlyseçenek olmadan, denediğimde githubanahtarımı kullanmaya çalışır ssh gitlab.com. Hiç bir anlamı yok.
Iulian Onofrei

188

Bunu yapmanın daha kolay bir yolunu buldum (şifre doğrulama kullanıyorsanız):

ssh -o PubkeyAuthentication=no username@hostname.com

Bu, anahtar olmayan kimlik doğrulamayı zorlar. Hemen oturum açmayı başardım.

Referans


3
+1, keşke size daha fazla verebilseydim. Ahududu Pi, açık anahtar olmadan girdiğim tek cihaz.
Alıyordum

1
Ve bunu kullanmak için rsync:rsync -av -e 'ssh -o PubkeyAuthentication=no' 'user@host.com:~/remote_file' 'local_file'
Ciro Santilli 17: 31'de

1
Parola kimlik doğrulaması için daha hızlı hale getirmek üzere bir Diğer Adı da oluşturabilirsiniz. alias sshp = 'ssh -o PubkeyAuthentication = no'
dhempler

26

Ben de bu hatayı alıyordum ve sunucunun 6 denemeye kadar kabul etmek üzere yapılandırıldığı b / c olduğunu görmüştüm:

/etc/ssh/sshd_config
...
...
#MaxAuthTries 6

Ayarlamaya ek olarak IdentitiesOnly yessizin de ~/.ssh/configdosyanın diğer seçeneklerin bir çift var.

  1. Artırın MaxAuthTries(ssh sunucusunda)
  2. Eğer mevcut olan anahtar çiftlerinin bazılarını silin ~/.ssh/dizinine & vadedessh-add -D
  3. açıkça bir anahtarı ~/.ssh/configdosyanızdaki belirli bir ana bilgisayara bağlayın

Bunun gibi:

host foo
hostname foo.example.com
IdentityFile /home/YOU/.ssh/foo
  1. Muhtemelen devam etmek için iyi bir yol değildir, çünkü ssh sunucunuzu biraz zayıflatır, çünkü verilen bağlantı girişiminde daha fazla anahtar kabul eder. Burada kaba kuvvet saldırı vektörlerini düşünün.

  2. Gerekmeyen ve kalıcı olarak silinebileceğiniz anahtarlara sahip olduğunuzu varsaymak için iyi bir yoldur.

  3. Ve IdentitiesOnly ayar yaklaşımı muhtemelen bu konuyla başa çıkmanın tercih edilen yoludur!


Son satırınızda /filme /home/YOU/.ssh/foo tanımlamalısınız, ancak kimlik dosyası olmalı (en azından)
Nin

7

Bunu ~ / .ssh / config dosyasına ekledim:

Host *
IdentitiesOnly yes

IdentitiesOnly = evet seçeneğini varsayılan olarak etkinleştirir. Özel anahtarla bağlantı kurmanız gerekirse, bunu -i seçeneğiyle belirtmelisiniz.


6

Aşağıdaki SSH Hatasını alırsanız:

$ Received disconnect from host: 2: Too many authentication failures for root

Bu, (sistemimde varsayılan) .ssh dizininizde kayıtlı beş veya daha fazla DSA / RSA kimlik dosyanız varsa ve '-i' seçeneği komut satırında belirtilmemişse olabilir.

Ssh istemcisi önce her bir kimliği (özel anahtar) kullanarak giriş yapmayı ve bir sonraki şifre doğrulama istemini yapmayı dener. Ancak, sshd beş hatalı giriş denemesinden sonra bağlantıyı keser (yine varsayılan olarak değişebilir).

.Ssh dizininizde çok sayıda özel anahtar varsa, '-o' isteğe bağlı argümanını kullanarak komut satırında "Genel Anahtar Kimlik Doğrulama" özelliğini devre dışı bırakabilirsiniz.

Örneğin:

$ ssh -o PubkeyAuthentication=no root@host

Bu tam olarak başıma gelen şeydi! Açıklama için çok teşekkürler;)
El Ninja Trepador

6

Bir şifreniz varsa ve sadece giriş yapmak için şifreyi kullanmak istiyorsanız, işte bunu nasıl yaptığınız.

SADECE parola doğrulamayı kullanmak ve Genel-anahtar kullanmamak ve biraz yanıltıcı "klavye-etkileşimli" (parola içeren bir üst ayardır) kullanmamak için, komut satırından bunu yapabilirsiniz:

ssh -o PreferredAuthentications=password user@example.com

3

@David gidiyor, sadece bunu IdentitiesOnly yes .ssh / config'inize ekleyin , aynı şeyi yaparssh -o PubkeyAuthentication=no.

Giriş yaptıktan sonra çıkarın .ssh/authorized_keys. Şimdi yerel makineye dönün ve aşağıdakileri yazın

cat ~/.ssh/id_rsa.pub | ssh -o PubkeyAuthentication=no user@IP_ADDR 'cat >> .ssh/authorized_keys'. Bu, ssh'ınızı genel anahtarla yeniden etkinleştirmelidir


2

Bunun eski bir iş parçacığı olduğunu biliyorum, ancak buraya sadece aynı hata iletisiyle karşılaştığımı eklemek istedim, ancak anahtarı kullanan kullanıcı yerine .ssh klasörünün kökünün sahibi olmasından kaynaklandı. Aşağıdaki komutları çalıştırarak sorunu düzelttim:

sudo chown -R user:user /home/user/.ssh

Ayrıca .ssh klasöründeki izinlerin doğru olduğundan da emin oldum:

sudo chmod 700 /home/user/.ssh

.Ssh dizinindeki dosyalar 600 iznine sahip olmalıdır:

sudo chmod 600 /home/user/.ssh/authorized_keys

Bunu ihmal etmeden kullanırken dikkatli olurdum. SSH anahtar izinleri, bazı anahtarlar, özellikle de AWS için genellikle 400 ile sınırlandırılmıştır. Bunları yukarıda ayarlamaya çalışmak, anahtarın kabul edilmemesine neden olacak ve sizi AWS hesabınızdan alıkoyabilir.
Michael Ryan Soileau

1

Benim durumumda sorun dizin izinleriydi. Bu benim için düzeltti:

$ chmod 750 ~;chmod 700 ~/.ssh


0

Genel anahtarımı girdim .ssh/authorized_keys2, ancak sunucu yalnızca okumak için yapılandırıldı .ssh/authorized_keys:

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys

Dosyamı taşıdıktan sonra .ssh/authorized_keys, anahtarımla başarılı bir şekilde giriş yapabilirim.


0

Çok fazla kimlik doğrulama hatası

Bu mesaj, uzak SSH sunucusunda uygulanan izin verilen sınırlar göz önüne alındığında çok fazla başarısız kimlik doğrulama denemesi yapmasından kaynaklanıyor. Bu potansiyel olarak SSH temsilcisine eklenmiş çok fazla kimliğiniz olduğu anlamına gelir.

İşte birkaç öneri:

  • -vDurumun bu olup olmadığını görmek için ekleyin (çok fazla kimlik kullanıyorsunuz).
  • Tarafından eklenen kimlikleri listele ssh-add -l.
  • Tarafından ajandan kimliğini başarısız kaldırın: ssh-add -d.
  • Ayrıca tüm kimlikleri silerek ssh-add -Dsilebilir ve sadece ilgili olanları tekrar ekleyebilirsiniz.
  • SSH sunucusuna erişiminiz varsa, MaxAuthTriesseçeneği işaretleyin (bkz :) man sshd_config.

    İlgili mesaj: 's' MaxAuthTries 'sınırı için bağlantı nedir sshd_config?

  • Bunların hiçbiri yardımcı olmazsa, doğru kimlik bilgilerini veya dosyayı kullandığınızdan emin olun.


-1

Bu mesaj doğru kullanıcı adı ve şifre girilmediğinde ortaya çıkabilir.

İlk önce kullanıcının listelendiğini kontrol edin:

vim /etc/passwd
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.