sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa Web Sunucuları SSH Permission Denied (publickey) Hatası Nasıl ...
🌐 Web Sunucuları

SSH Permission Denied (publickey) Hatası Nasıl Çözülür?

SSH anahtar kimlik doğrulaması başarısız olduğunda bu hata oluşur. authorized_keys ve dosya izinleri kontrol edilmelidir.

📅 13 Ocak 2025 👁 55 görüntülenme ⏱ 5 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

SSH Permission Denied Hatası Nedir?

SSH Permission denied (publickey) hatası, SSH istemcisinin sunucuya anahtar tabanlı kimlik doğrulama (public key authentication) ile bağlanmaya çalışırken başarısız olduğunda karşılaşılan bir erişim reddi hatasıdır. Bu hata, SSH şifre ile girişin devre dışı bırakıldığı veya yalnızca anahtar tabanlı girişin etkinleştirildiği sunucularda sıkça görülür.

SSH anahtar tabanlı kimlik doğrulaması şöyle çalışır: İstemcideki özel anahtar (private key) ile sunucudaki ortak anahtar (public key) eşleştiğinde oturum açılır. Eğer sunucuda kayıtlı ortak anahtar yoksa, yanlış anahtarla bağlanmaya çalışıyorsanız veya dosya izinleri yanlışsa bu hata oluşur.

Hata mesajı şu şekillerde görünebilir:

Permission denied (publickey).
# veya
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
# veya
debug1: No more authentication methods to try.
Permission denied (publickey).

Bu sorun özellikle yeni sunucu kurulumlarında, SSH anahtarı değiştirdikten sonra veya sunucuya başka bir kullanıcı hesabıyla bağlanmaya çalışırken ortaya çıkar.


Olası Nedenler

  • ~/.ssh/authorized_keys dosyası eksik veya yanlış konumda
  • ~/.ssh/ dizin izni 700 değil (örn. 755 veya 777 olmuş)
  • authorized_keys dosya izni 600 değil (örn. 644 olmuş)
  • Yanlış kullanıcı adıyla bağlanmaya çalışılıyor (örn. root yerine ubuntu)
  • Yanlış private key dosyası kullanılıyor
  • sshd_config'de PubkeyAuthentication no ayarlanmış
  • SELinux veya AppArmor SSH dizin erişimini engelliyor
  • Sahip (owner) yanlış; authorized_keys root'a ait ama kullanıcı farklı
  • SSH config dosyasında yanlış IdentityFile belirtilmiş

Çözüm Adımları

1. SSH Debug Modu ile Sorunu Tespit Etme

İlk adım olarak, bağlantı girişimini verbose modda çalıştırarak tam hata mesajını görün:

ssh -vvv kullanici@sunucu_ip

Çıktıda şunlara bakın:

debug1: Offering public key: /home/user/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.

Eğer anahtar "offered" ama reddedildiyse sorun sunucu tarafındadır (authorized_keys veya izinler). Eğer hiç anahtar önerilmediyse istemci tarafında anahtar yapılandırması yoktur.

2. authorized_keys Dosyasını Oluşturma ve Düzenleme

Sunucuda ilgili kullanıcı olarak şu adımları izleyin:

# .ssh dizini oluştur (yoksa)
mkdir -p ~/.ssh

# authorized_keys dosyasını oluştur/düzenle
nano ~/.ssh/authorized_keys

# Yerel makinenizdeki public key içeriğini buraya yapıştırın
# Örnek (tek satır olmalı):
# ssh-rsa AAAAB3NzaC1yc2EAAA... kullanici@bilgisayar

Public key'inizi yerel makinenizden şu komutla öğrenebilirsiniz:

cat ~/.ssh/id_rsa.pub
# veya Ed25519 anahtar için:
cat ~/.ssh/id_ed25519.pub

3. Dosya İzinlerini Düzeltme

SSH kimlik doğrulaması için izinler çok kritiktir. Sunucuda şunu çalıştırın:

# .ssh dizini için: sadece sahip okuyup yazabilmeli
chmod 700 ~/.ssh

# authorized_keys için: sadece sahip okuyup yazabilmeli
chmod 600 ~/.ssh/authorized_keys

# İzinleri kontrol edin
ls -la ~/.ssh/

Sahipliği de kontrol edin:

ls -la ~/.ssh/authorized_keys
# Çıktı şöyle olmalı: -rw------- 1 kullanici kullanici ...

Sahiplik yanlışsa düzeltin:

chown kullanici:kullanici ~/.ssh/authorized_keys
chown kullanici:kullanici ~/.ssh/

4. sshd_config Yapılandırmasını Kontrol Etme

Sunucuda SSH daemon yapılandırmasını kontrol edin:

sudo nano /etc/ssh/sshd_config

Şu direktiflerin doğru ayarlandığından emin olun:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# Root girişine izin veriyorsanız:
PermitRootLogin yes
# veya sadece anahtar ile root girişi:
# PermitRootLogin prohibit-password

Değişiklikten sonra SSH'ı yeniden başlatın:

sudo systemctl restart sshd

5. Yeni SSH Anahtar Çifti Oluşturma

Mevcut anahtarınız çalışmıyorsa yeni bir anahtar çifti oluşturun:

# Yerel makinenizde:
# ED25519 (önerilir, daha güvenli):
ssh-keygen -t ed25519 -C "email@example.com"

# veya RSA 4096:
ssh-keygen -t rsa -b 4096 -C "email@example.com"

Public key'i sunucuya kopyalamak için:

ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@sunucu_ip
# veya manuel olarak:
cat ~/.ssh/id_ed25519.pub | ssh kullanici@sunucu_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

6. İstemci SSH Config Dosyası

Yerel makinenizde ~/.ssh/config dosyası oluşturarak hangi anahtarın kullanılacağını belirtin:

Host sunucu
    HostName 1.2.3.4
    User kullanici
    IdentityFile ~/.ssh/id_ed25519
    Port 22

Özet ve Önleyici Tedbirler

  • ~/.ssh/ dizin izni her zaman 700, authorized_keys izni 600 olmalıdır
  • SSH bağlantılarını her zaman -v ile test ederek sorunları hızlıca tespit edin
  • Mümkünse şifre kimlik doğrulamasını tamamen kapatın (PasswordAuthentication no)
  • ED25519 anahtarları RSA'ya kıyasla daha güvenli ve daha hızlıdır, tercih edin
  • Sunucuya ilk bağlanmadan önce bir kopyayı güvenli yerde saklayın
  • Fail2ban ile brute force saldırılarına karşı SSH'ı koruyun

İlgili Makaleler

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al
Etiketler: #linux #ssh #güvenlik

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.