SSH "Permission denied (publickey)" ve "Too many authentication failures"

Linux Sunucu (SSH) 67 görüntülenme Markdown

SSH anahtarınızı sunucuya ekledikten sonra şu hatalardan birini alıyorsunuz:

[email protected]: Permission denied (publickey).
Received disconnect from 203.0.113.10 port 22: Too many authentication failures

İkisi de sunucunun anahtarınızı kabul etmediği anlamına gelir ama sebepleri farklıdır. Önce tahmin yürütmeyi bırakıp SSH'a ne yaptığını sorun.

Ayrıntılı çıktıyı alın

ssh -vvv -i ~/.ssh/id_ed25519 [email protected]

Çıktıda Offering public key satırları sizin hangi anahtarları denediğinizi, Authentications that can continue sunucunun hangi yöntemleri kabul ettiğini gösterir. publickey listede yoksa sunucuda anahtarla giriş kapalıdır. Anahtar teklif edilip reddedildiyse aşağıdaki nedenlere bakın.

Permission denied (publickey) nedenleri

  1. Yanlış kullanıcı adı. Anahtarı ali kullanıcısına eklediyseniz root@ ile bağlanmayın. Doğru kullanıcıyı yazın.
  2. Genel anahtar sunucuda yok ya da bozuk. Sunucuda (VNC Konsol'dan) o kullanıcının ~/.ssh/authorized_keys dosyasında, kendi .pub dosyanızın içeriğinin tek satır olarak durduğundan emin olun. Satır ortasından bölünmüş ya da sonuna fazladan metin eklenmiş anahtar çalışmaz.
  3. İzinler yanlış. SSH, çok açık izinli dosyaları güvenlik nedeniyle reddeder:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    chmod go-w ~
    Ev dizininin sahibi kullanıcı olmalı (chown -R kullanici:kullanici ~/.ssh) ve herkesin yazabildiği bir dizin olmamalıdır.
  4. Yanlış anahtar dosyası. -i ile gösterdiğiniz özel anahtar, sunucuya eklediğiniz genel anahtarın eşi olmalı. Karşılaştırmak için ssh-keygen -lf anahtar.pub ile iki yerdeki parmak izine bakın.
  5. Eski anahtar türü. Yeni OpenSSH sürümleri SHA1 imzalı ssh-rsa anahtarlarını varsayılan olarak kabul etmez. Yeni bir ED25519 anahtarı üretin (ssh-keygen -t ed25519) ve onu ekleyin: SSH anahtarı.
  6. Sunucuda kök girişi ya da anahtar girişi kapalı. sudo sshd -T | grep -i -E "permitrootlogin|pubkeyauthentication" çıktısına bakın. Sunucularımızın şablonunda root girişini açan dosya /etc/ssh/sshd_config.d/00-wisecp-root.conf'dir.

Sunucu tarafının neden reddettiğini en açık şekilde günlük söyler: sudo journalctl -u ssh -n 30 (Debian'da sudo tail -n 30 /var/log/auth.log). Authentication refused: bad ownership or modes for directory satırı izinleri işaret eder.

Too many authentication failures

SSH, bilgisayarınızdaki ssh-agent'ta bulunan tüm anahtarları sırayla dener. Sunucu varsayılan olarak yalnızca birkaç denemeye izin verir (genelde 6); çok anahtarınız varsa doğru anahtara sıra gelmeden bağlantı kesilir. Çözüm: yalnızca belirttiğiniz anahtarı denetmek.

ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 [email protected]

Kalıcı yapmak için ~/.ssh/config dosyasına ekleyin:

Host sunucum
    HostName 203.0.113.10
    User kullanici
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

Artık sadece ssh sunucum yazarsınız.

Windows'ta ek not

"UNPROTECTED PRIVATE KEY FILE" hatası alırsanız özel anahtar dosyasının izinleri geniştir. Dosyaya sağ tıklayın > Özellikler > Güvenlik bölümünden yalnızca kendi kullanıcınıza okuma izni bırakın. Anahtar hiç çalışmazsa parolayla girip anahtarı yeniden ekleyebilir ya da VNC Konsol'dan düzeltebilirsiniz: konsol makalesi.

Sık sorulanlar

Anahtarla girişi çalıştırana kadar parola girişini kapatmayın.

Önce anahtarla girişi başka bir pencerede doğrulayın, sonra parola girişini kapatın. Aksi halde kendinizi dışarıda bırakırsınız ve konsolla düzeltmeniz gerekir.

Aynı anahtarla başka sunucuya giriyorum, bu sunucuya girmiyorum.

Genelde bu sunucuda anahtar eklenmemiştir ya da kullanıcı adı farklıdır. Şablonlarımızda root'a parolayla girebilirsiniz; girdikten sonra anahtarı ekleyin.

Parolalı anahtar kullanırsam her seferinde parola ister mi?

Evet; ssh-agent'a bir kez ekleyerek (ssh-add) oturum boyunca tekrar yazmaktan kurtulursunuz.

İlgili makaleler

Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.