GitHub Permission Denied Publickey Hatası Nasıl Çözülür?

metn2charorcnal0 · 28 Eylül 2026 · 1 görüntülenme · 0 cevap

GitHub üzerinde git clone, git pull veya git push yaparken Permission denied (publickey) hatası alıyorsanız GitHub SSH üzerinden bilgisayarınızı veya sunucunuzu doğrulayamıyor demektir.


En sık nedenler SSH anahtarının bulunmaması, anahtarın GitHub hesabına eklenmemesi, yanlış hesabın kullanılması veya SSH'nin doğru anahtarı seçmemesidir.

1. Repository'nin SSH kullandığını kontrol edin

Öncelikle:

git remote -v

komutunu çalıştırın.

Şuna benzer bir adres görüyorsanız SSH kullanıyorsunuz:

git@github.com:kullanici/proje.git

Adres:

https://github.com/kullanici/proje.git

şeklindeyse HTTPS kullanıyorsunuz ve publickey problemi normal Git remote bağlantınızdan farklı bir SSH işlemine ait olabilir.

2. Mevcut SSH anahtarlarını kontrol edin

Linux ve macOS üzerinde:

ls -la ~/.ssh

Windows PowerShell üzerinde de kullanıcı profilinizdeki .ssh klasörünü kontrol edebilirsiniz.

Örneğin şu dosyalar bulunabilir:

id_ed25519

id_ed25519.pub

Burada .pub uzantılı dosya public key, uzantısız dosya ise private key'dir.

Private key dosyanızı hiç kimseyle paylaşmayın ve GitHub'a yüklemeyin.

3. SSH anahtarınız yoksa oluşturun

Yeni sistemlerde uygun olduğunda Ed25519 anahtarı oluşturmak için:

ssh-keygen -t ed25519 -C "mail@example.com"

komutunu kullanabilirsiniz.

Komut size anahtarın kaydedileceği konumu ve isteğe bağlı parola belirleme seçeneklerini sorabilir.

Varsayılan konumu kullanacaksanız genellikle Enter ile devam edebilirsiniz.

4. Public key'i GitHub hesabınıza ekleyin

Oluşturduğunuz .pub dosyasının içeriğini kopyalayın.

Örneğin:

~/.ssh/id_ed25519.pub

Bu dosyanın içeriğini GitHub hesabınızdaki SSH key ayarlarına ekleyin.

Burada önemli nokta .pub dosyasının kullanılmasıdır.

Private key olan:

id_ed25519

dosyasını kesinlikle paylaşmayın.

5. SSH bağlantısını test edin

Anahtar GitHub hesabına eklendikten sonra:

ssh -T git@github.com

komutunu çalıştırın.

İlk bağlantıda GitHub sunucusunun kimliğini doğrulamanız istenebilir. Gösterilen fingerprint'i GitHub'ın resmi olarak yayınladığı fingerprint bilgileriyle doğrulamadan kabul etmeyin.

Kimlik doğrulama başarılı olduğunda GitHub hesabınızın tanındığını belirten bir mesaj görmeniz beklenir.

6. SSH Agent anahtarı kullanmıyor olabilir

Anahtar bilgisayarınızda bulunmasına rağmen SSH tarafından kullanılmıyorsa SSH agent kontrol edilebilir.

Linux veya macOS ortamında uygun yapılandırmada:

ssh-add ~/.ssh/id_ed25519

ile anahtar agent'a eklenebilir.

Öncesinde SSH agent'ın çalışıyor olması gerekir.

İşletim sistemine göre agent başlatma ve yönetim yöntemi değişebilir.

7. SSH hangi anahtarı kullanıyor kontrol edin

Bilgisayarda birden fazla SSH anahtarı varsa GitHub bağlantısında yanlış anahtar deneniyor olabilir.

Daha ayrıntılı bağlantı çıktısı için:

ssh -vT git@github.com

komutu kullanılabilir.

Bu çıktı SSH'nin hangi anahtarları bulduğunu ve hangilerini denediğini anlamaya yardımcı olur.

Çıktıda özel bilgiler bulunabileceğinden forumda paylaşmadan önce hassas bilgileri kontrol edin.

8. Birden fazla GitHub hesabı kullanıyorsanız

Aynı bilgisayarda kişisel ve iş hesabı gibi birden fazla GitHub hesabı kullanıyorsanız farklı SSH anahtarlarını ayırmanız gerekebilir.

Bu tür durumlarda ~/.ssh/config dosyası üzerinden farklı host tanımları yapılabilir.

Örneğin her hesap için farklı anahtar belirlenebilir.

Ancak yapılandırmayı yaparken repository remote adresinin de tanımladığınız host ile uyumlu olması gerekir.

9. Anahtar doğru hesapta mı kontrol edin

SSH anahtarınız GitHub'a eklenmiş olsa bile repository başka bir GitHub hesabına ait olabilir.

Örneğin SSH sizi hesapA olarak doğrularken repository yalnızca hesapB için yazma yetkisine sahipse push işlemi yine başarısız olabilir.

Önce:

ssh -T git@github.com

ile hangi hesabın tanındığını kontrol edin.

Ardından bu hesabın ilgili repository üzerinde gerekli yetkiye sahip olduğundan emin olun.

10. Sunucudan GitHub'a bağlanıyorsanız

VPS veya başka bir Linux sunucusundan private repository çekiyorsanız SSH anahtarının kendi bilgisayarınızda değil, GitHub bağlantısını gerçekleştiren ortamda kullanılabilir olması gerekir.

Örneğin komutu VPS üzerinde çalıştırıyorsanız SSH yapılandırmasını VPS tarafında kontrol etmeniz gerekir.

Private key'i güvenli olmayan yöntemlerle cihazlar arasında taşımayın.

Repository ve kullanım senaryosuna göre uygun erişim yöntemini seçin.

11. Dosya izinlerini kontrol edin

Linux ve benzeri sistemlerde SSH özel anahtarlarının izinleri gereğinden fazla açık olduğunda SSH güvenlik nedeniyle anahtarı kullanmayı reddedebilir.

Hata mesajında izinlerle ilgili bir uyarı varsa .ssh klasörü ve private key dosyasının sahiplik ve izinlerini kontrol edin.

İzinleri rastgele değiştirmek yerine SSH'nin hata mesajında belirttiği problemi çözün.

12. Remote adresini yanlış yazmış olabilirsiniz

Kontrol edin:

git remote -v

Gerekirse doğru SSH adresini ayarlayın:

git remote set-url origin git@github.com:kullanici/proje.git

Ardından tekrar:

git remote -v

ile kontrol edin.

13. SSH yerine HTTPS kullanılabilir mi?

Evet. SSH kullanmak zorunlu değildir.

Repository remote adresini uygun HTTPS adresine değiştirerek GitHub'ın desteklediği HTTPS kimlik doğrulama yöntemlerinden yararlanabilirsiniz.

Ancak yalnızca hata mesajından kaçmak için bağlantı yöntemini değiştirmek yerine mevcut SSH probleminin nedenini anlamak uzun vadede daha faydalı olabilir.

Hızlı kontrol sırası

Permission denied (publickey) hatasında şu sırayla ilerleyin:

1. git remote -v
2. ls -la ~/.ssh
3. SSH anahtarınız yoksa oluşturun.
4. Public key'i doğru GitHub hesabına ekleyin.
5. ssh -T git@github.com ile bağlantıyı test edin.
6. Gerekirse SSH agent'ı kontrol edin.
7. Birden fazla anahtar varsa ssh -vT git@github.com ile kullanılan anahtarı inceleyin.
8. GitHub hesabınızın repository üzerinde gerekli yetkiye sahip olduğunu doğrulayın.
9. Tekrar git push veya git pull deneyin.

Özellikle private SSH anahtarınızı, erişim tokenınızı veya başka gizli kimlik bilgilerinizi forum mesajına eklemeyin.

Yardım isterken işletim sisteminizi, git remote -v çıktısını hassas bilgileri gizleyerek, ssh -T git@github.com sonucunu ve aldığınız hata mesajını paylaşmanız sorunun daha hızlı teşhis edilmesini sağlar.