SSH "Permission denied (publickey)" ve "Too many authentication failures"
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
- Yanlış kullanıcı adı. Anahtarı
alikullanıcısına eklediysenizroot@ile bağlanmayın. Doğru kullanıcıyı yazın. - Genel anahtar sunucuda yok ya da bozuk. Sunucuda (VNC Konsol'dan) o kullanıcının
~/.ssh/authorized_keysdosyasında, kendi.pubdosyanı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. - İzinler yanlış. SSH, çok açık izinli dosyaları güvenlik nedeniyle reddeder:
Ev dizininin sahibi kullanıcı olmalı (chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chmod go-w ~chown -R kullanici:kullanici ~/.ssh) ve herkesin yazabildiği bir dizin olmamalıdır. - Yanlış anahtar dosyası.
-iile gösterdiğiniz özel anahtar, sunucuya eklediğiniz genel anahtarın eşi olmalı. Karşılaştırmak içinssh-keygen -lf anahtar.pubile iki yerdeki parmak izine bakın. - Eski anahtar türü. Yeni OpenSSH sürümleri SHA1 imzalı
ssh-rsaanahtarlarını varsayılan olarak kabul etmez. Yeni bir ED25519 anahtarı üretin (ssh-keygen -t ed25519) ve onu ekleyin: SSH anahtarı. - 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
- SSH anahtarı nedir? Parola yerine nasıl kullanırım?
- SSH hataları: "Permission denied" ve "Connection refused"
- Linux sunucuda sudo yetkili kullanıcı açma ve root girişini kapatma
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.
Geri bildiriminiz için teşekkürler!