İçeriğe geç

Menü

Berk Akademi
Yorumlar Google yorumları Özel Ders Başvuru Ücretsiz ön görüşme Ana Sayfa

Git “fatal: Authentication failed” Hatası Nasıl Çözülür?

git-fatal-authentication-failed-hatasi-nasil-cozulur
Bu yazıda neler var?
  1. Git fatal: Authentication failed hatası neden oluşur?
  2. Kişisel erişim tokenı nasıl oluşturulur?
  3. Eski Git kimlik bilgileri nasıl temizlenir?
  4. Temizledikten sonra git push nasıl denenir?
  5. Token kullanımında hangi güvenlik hatalarından kaçınmalısın?
  6. SSH ile bağlanmak nasıl alternatif oluşturur?
  7. Sık Sorulan Sorular

Git “fatal: Authentication failed” hatası, HTTPS üzerinden uzak depoya bağlanırken GitHub’ın sunduğun kimlik bilgilerini kabul etmemesiyle ortaya çıkar. Çözüm için remote adresini, kullandığın hesabı ve kişisel erişim tokenını kontrol etmen; gerektiğinde eski kayıtlı kimlik bilgilerini temizleyip yeniden doğrulama yapman gerekir. HTTPS yerine SSH kullanmak da farklı bir bağlantı yöntemi sunar.

Git fatal: Authentication failed hatası neden oluşur?

Bu hata, Git’in HTTPS üzerinden uzak depoya bağlanırken geçerli bir kimlik bilgisiyle doğrulama yapamaması nedeniyle oluşur. HTTPS, bilgisayarındaki Git istemcisi ile GitHub’daki uzak depo arasında web üzerinden kurulan bağlantıdır. git push, git pull veya git fetch sırasında Git kullanıcı adını ve kimlik bilgisini sorabilir.

Kimlik bilgisi yöneticisi, bu bilgileri bilgisayarında saklayıp sonraki Git işlemlerinde yeniden kullanabilen yardımcı yazılımdır. Git Credential Manager bu amaçla kullanılan araçlardan biridir. Kişisel erişim tokenı ise GitHub hesabının parolası yerine parola alanına girilen, belirli erişim yetkileri taşıyan özel bir kimlik bilgisidir. GitHub’ın komut satırında HTTPS kullanan Git işlemleri için hesap parolası yerine kişisel erişim tokenı kullanılmasını istediği resmî belgelerde belirtilir. GitHub’ın kimlik doğrulama belgelerinde HTTPS ve SSH yöntemlerinin farkları da açıklanır.

Authentication, hesabın gerçekten sana ait olup olmadığını doğrulama aşamasıdır. Authorization ise doğrulanan hesabın ilgili depoyu okuma veya değiştirme yetkisine sahip olup olmadığını belirler. Geçerli bir token kullanman authentication sorununu çözebilir, ancak hesabının depoya erişim yetkisi yoksa authorization aşamasında yine hata alabilirsin.

Hatanın yaygın nedenleri şunlardır:

  • Bilgisayarda eski veya hatalı bir kullanıcı adı, parola ya da token kayıtlıdır.
  • Git, erişim yetkisi olmayan farklı bir GitHub hesabını kullanıyordur.
  • Token geçersizdir, süresi dolmuştur veya iptal edilmiştir.
  • Tokenın ilgili depoyu okuma ya da değiştirme yetkisi yoktur.
  • Remote adresinde kullanıcı adı, kuruluş adı veya depo adı hatalıdır.

İlk teşhis için terminalde şu komutu çalıştırabilirsin:

git remote -v

Çıktıda fetch ve push satırlarında doğru GitHub hesabına ait depo adresinin göründüğünü kontrol et. Ardından kullandığın hesabı, tokenın geçerlilik durumunu ve bu hesabın depoya erişim yetkisini ayrı ayrı incele.

Kişisel erişim tokenı nasıl oluşturulur?

Kişisel erişim tokenı nasıl oluşturulur?

HTTPS ile Git işlemlerinde kullanacağın kişisel erişim tokenı, hesap ayarları içinden oluşturulmalı ve yalnızca gereken erişimle sınırlandırılmalıdır. GitHub, kişisel erişim tokenı olarak fine-grained personal access token ve personal access token classic olmak üzere iki tür sunar; mümkün olan durumlarda daha ayrıntılı depo ve izin seçimi sağlayan fine-grained türünü önerir.

  1. GitHub hesabında profil menüsünü açıp Settings bölümüne git.
  2. Sol menüden Developer settings ve ardından Personal access tokens bölümünü aç.
  3. Özel depo seçimi ve ayrıntılı izinler sunan Fine-grained tokens alanında Generate new token seçeneğini kullan.
  4. Tokenın yalnızca erişmesi gereken kaynak sahibini ve depoları seç. Tek bir depo için kullanılacaksa kapsamı tüm depoları içerecek şekilde genişletme.
  5. Gerekli izin düzeyini belirle. Yalnızca okuma yapacaksan yazma yetkisi verme; push işlemi gerekiyorsa depo içeriği için gereken yazma düzeyini seç.
  6. Token için bir son kullanma tarihi belirle. Görünen süre seçenekleri hesabın veya kuruluşun uyguladığı politikalara göre değişebilir.
  7. Tokenı oluşturduktan sonra ekranda görünen değeri güvenli bir kimlik bilgisi saklayıcısına kopyala ve oluşturma ekranından ayrılmadan önce kaydet.

Token değeri oluşturma aşamasında görünürken kopyalanmalıdır. Kaydedilmemiş veya kaybolmuş bir tokenı kullanmaya çalışmak yerine yeni token oluşturup artık kullanılmayan tokenı kaldırmak daha doğru bir adımdır. Git terminalde parola istediğinde gerçek hesap parolanı değil, bu tokenı girersin. Tokenı uzak depo adresine ekleme, herkese açık dosyada tutma ve makale ya da örnek kod içinde paylaşma.

Fine-grained token oluşturma adımları ve izin seçenekleri, GitHub’ın kişisel erişim tokenı belgelerinde ayrıntılı olarak açıklanır.

Eski Git kimlik bilgileri nasıl temizlenir?

Bilgisayarda kayıtlı eski veya hatalı GitHub kimlik bilgisini silmek, Git’in bir sonraki işlemde yeni kimlik bilgilerini ve gerektiğinde yeni tokenı sormasını sağlayabilir. Kimlik bilgileri yöneticisi, kullanıcı adı ve token gibi bilgileri işletim sisteminin güvenli deposunda saklayan araçtır.

Platform Kayıt yeri Güvenli işlem
Windows Credential Manager içindeki GitHub kaydı Yalnızca ilgili GitHub kaydını kaldır
macOS Anahtar Zinciri içindeki github.com kaydı İlgili Internet password kaydını sil
Git Credential Manager Yapılandırılmış güvenli kimlik deposu GitHub kaydını işletim sistemindeki ilgili depodan kaldır

Windows Kimlik Bilgisi Yöneticisi

Windows görev çubuğundaki aramaya Credential Manager yazıp aracı aç. Web Credentials veya Windows Credentials bölümlerinde GitHub ile ilişkili kaydı bul, ayrıntılarını aç ve yalnızca bu kaydı kaldır. Windows’ta kayıtlı kimlik bilgilerinin yönetimi için Microsoft’un Credential Manager açıklamasına başvurabilirsin.

macOS Anahtar Zinciri

Spotlight aramasında Keychain Access uygulamasını aç ve arama alanına github.com yaz. Internet password türündeki ilgili kaydı seçerek sil. Bu işlem, macOS’ta Git tarafından kullanılan eski parola veya token kaydının yeniden kullanılmasını önlemeye yardımcı olur.

Git Credential Manager

Git Credential Manager, Git’in kimlik doğrulama sırasında çağırdığı işletim sistemi bağımsız bir yardımcıdır. Kurulu ve yapılandırılmışsa git push sırasında oturum açma penceresini yönetebilir; get, store ve erase işlemleri çoğunlukla Git tarafından arka planda yürütülür. Bu nedenle tüm kimlik bilgilerini silmek yerine, kullandığın platformdaki yalnızca GitHub kaydını kaldır ve ardından işlemi yeniden dene.

Tokenı uzak depo adresine ekleme, bir dosyaya yazma veya komut satırında görünür biçimde kullanma. Kimlik bilgisi temizlendikten sonra yeni tokenı yalnızca Git istediğinde açılan parola alanına gir.

Temizledikten sonra git push nasıl denenir?

Temizledikten sonra git push nasıl denenir?

Kayıtlı hatalı kimlik bilgisi temizlendikten sonra uzak depo adresini kontrol ederek git push komutunu yeniden çalıştırmalısın. Yeni bir depoya ilk kez gönderim yaparken önce git remote -v ile bağlantıyı doğrula; uzak depo tanımlı değilse HTTPS adresini origin adıyla ekle.

$ git remote -v
origin  https://github.com/kullaniciadi/ornek-depo.git (fetch)
origin  https://github.com/kullaniciadi/ornek-depo.git (push)

$ git push -u origin main
Username for 'https://github.com': kullaniciadi
Password for 'https://[email protected]':
remote: Invalid username or token.
fatal: Authentication failed for 'https://github.com/kullaniciadi/ornek-depo.git/'

$ git push -u origin main
Username for 'https://github.com': kullaniciadi
Password for 'https://[email protected]':
Enumerating objects: 3, done.
Writing objects: 100% (3/3), done.
To https://github.com/kullaniciadi/ornek-depo.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

Password alanında hesap parolası yerine kişisel erişim tokenını gir. Terminal, tokenı yazarken karakterleri göstermeyebilir; bu durum girişin alınmadığı anlamına gelmez. Tokenı komutun içine veya uzak depo adresine yazma.

Yukarıdaki hata ve başarı satırları temsili örnektir; Git sürümüne ve uzak deponun yanıtına göre değişebilir. main burada örnek yerel dal adıdır. Dalının adı farklıysa komutta main yerine kendi dal adını kullanmalısın. Aynı kimlik doğrulama yöntemi, HTTPS adresiyle yapılan git clone işleminde de geçerlidir. GitHub’ın komut satırında HTTPS kimlik doğrulama açıklamasında belirtildiği gibi parola alanında token kullanılır.

Token kullanımında hangi güvenlik hatalarından kaçınmalısın?

Kimlik doğrulama hatasını düzeltirken kişisel erişim tokenını görünür veya gereğinden geniş yetkili hâle getirmek, bağlantı sorununu çözerken yeni bir güvenlik riski oluşturabilir. GitHub üzerinde HTTPS ile işlem yaparken parola yerine token kullanılır; token, bu amaçla oluşturulan özel bir kimlik doğrulama bilgisidir.

  1. Hesap şifresini tekrar tekrar girmek: GitHub, Git işlemlerinde hesap parolasıyla yapılan kimlik doğrulamasını desteklemez. Git parola istediğinde kişisel erişim tokenını kullanmalısın. Git Credential Manager gibi bir kimlik bilgileri yöneticisi, tokenı her işlemde komut satırına yazma ihtiyacını azaltabilir. Ayrıntılar için GitHub'ın kişisel erişim tokenı belgelerine bakabilirsin.
  2. Tokenı uzak depo adresine yazmak: https://TOKEN@... biçimindeki bir adres pratik görünse de tokenın kabuk komut geçmişinde, Git yapılandırmasında, hata çıktılarında veya çeşitli loglarda görünmesine neden olabilir. Uzak adresinde yalnızca depo adresi bulunmalı, token giriş sırasında veya güvenli bir kimlik bilgileri yöneticisi aracılığıyla kullanılmalıdır.
  3. Tokenı dosyaya kaydetmek: Tokenı kaynak koduna, yapılandırma dosyasına, not dosyasına veya betiğe yazmak dosyanın yanlışlıkla commit edilmesine yol açabilir. Dosya daha sonra silinse bile token önceki commitlerde ve Git geçmişinde kalabilir.
  4. Tokenı herkese açık biçimde paylaşmak: Herkese açık bir depoda, ekran görüntüsünde, sohbet mesajında veya paylaşılabilir hata kaydında token bırakma. Tokenın tamamı görünmese bile çevresindeki komut, kullanıcı adı veya depo bilgileri ek risk oluşturabilir.
  5. Gereksiz tüm izinleri vermek: Tokenın erişimini yalnızca ihtiyaç duyduğun kaynaklar ve işlemlerle sınırlandır. Geniş izinli bir token açığa çıkarsa yetkisiz kişinin erişebileceği depo ve işlemlerin kapsamı da büyüyebilir. Mümkünse sona erme tarihi belirle ve kullanılmayan tokenları kaldır.

Tokenın açığa çıktığından şüpheleniyorsan önce ilgili tokenı kullanılamaz hâle getir. GitHub'da profil fotoğrafından Settings, ardından Developer settings ve Personal access tokens bölümüne geç; tokenın türüne göre Fine-grained tokens veya Tokens (classic) sayfasından ilgili tokenı sil. Daha sonra yalnızca ihtiyaç duyduğun kaynaklara ve işlemlere erişen, sona erme tarihi belirlenmiş yeni bir token oluştur.

Kontrolü tamamlamak için şu maddeleri gözden geçir:

  • Uzak depo adresinde token bulunmuyor.
  • Dosyalarda ve commit geçmişinde token bulunmuyor.
  • Token izinleri gerekli kapsamla sınırlı.
  • Token için bir son kullanma tarihi belirlenmiş.
  • Kullanılmayan eski tokenlar kaldırılmış.

SSH ile bağlanmak nasıl alternatif oluşturur?

SSH, HTTPS ve token yerine bilgisayarındaki özel anahtar ile GitHub hesabında tanımlı karşılık gelen açık anahtarın kullanıldığı bir bağlantı yöntemidir. Anahtar çifti iki parçadan oluşur: özel anahtar bilgisayarında korunur, açık anahtar ise uzak hizmette hesabına eklenir. Özel anahtarı paylaşmamalı, mümkünse onu bir parola ile korumalısın.

HTTPS ile token kullanımı ve SSH arasında seçim yaparken mevcut remote adresini, anahtar yönetimini ve kullandığın bilgisayar sayısını değerlendirebilirsin. HTTPS, özellikle farklı bilgisayarlarda veya ağ kısıtlarının bulunduğu ortamlarda daha kolay olabilir. SSH ise anahtar kurulumu tamamlandıktan sonra token girmeden çalışmaya uygun bir akış sunabilir, ancak her bilgisayar için anahtarın ve SSH istemcisinin doğru yapılandırılması gerekir.

Önce remote adresinin hangi yöntemi kullandığını kontrol et. https://github.com/kullanici/depo.git HTTPS bağlantısını, [email protected]:kullanici/depo.git ise SSH bağlantısını gösterir. SSH kullanmaya geçeceksen remote adresini Git'in remote set-url komutuyla değiştirebilirsin.

git remote -v
git remote set-url origin [email protected]:KULLANICI/DEPO.git
ssh -T [email protected]

Permission denied (publickey) hatası, sunucunun sunulan SSH anahtarını kabul etmediğini gösterebilir. Anahtar çiftinin oluşturulup oluşturulmadığını, açık anahtarın doğru GitHub hesabına eklenip eklenmediğini, özel anahtarın SSH istemcisi veya SSH agent tarafından kullanıldığını ve remote adresinin SSH biçiminde olduğunu kontrol et. GitHub'ın SSH anahtarı oluşturma ve ssh-agent belgelerinde işletim sistemine göre gerekli adımlar açıklanır.

Bağlantıyı ssh -T [email protected] komutuyla sınayabilirsin. Kullanıcı adını içeren başarılı bir kimlik doğrulama mesajı görmen, SSH anahtarının hesapla eşleştiğini gösterir. Hata devam ederse farklı bir anahtarın seçilmesi, anahtarın agent'a eklenmemesi veya açık anahtarın başka bir hesaba tanımlanması gibi ayrıntıları yeniden incele.

Sık Sorulan Sorular

GitHub şifrem neden git push sırasında kabul edilmiyor?

GitHub, HTTPS üzerinden Git işlemlerinde hesap şifresi yerine kişisel erişim tokenı kullanılmasını ister. Parola alanına hesap şifreni değil, oluşturduğun tokenı girmelisin.

Tokenı uzak depo adresine yazmak neden güvenli değildir?

Tokenı uzak depo adresine yazmak, kimlik doğrulama bilgisinin komut geçmişinde, Git yapılandırmasında veya loglarda görünmesine neden olabilir. Token açığa çıktığında hesabındaki yetkili kaynaklara erişim riski doğar.

Kimlik bilgilerini sildikten sonra aynı Authentication failed hatası sürerse neyi kontrol etmeliyim?

Remote adresinin doğru hesaba ve doğru depoya ait olduğunu, Git parola istediğinde token kullandığını ve tokenın gerekli erişime sahip olduğunu kontrol et. Tokenın süresinin dolmuş veya daha önce silinmiş olması da yeni bir token oluşturmanı gerektirebilir.

HTTPS yerine SSH kullanırken Permission denied (publickey) hatası neden çıkar?

Bu hata, GitHub'ın sunulan SSH anahtarını kabul etmediğini gösterir. Açık anahtarın doğru hesaba eklenmesi, özel anahtarın SSH istemcisi tarafından kullanılması ve remote adresinin SSH biçiminde olması gerekir.

Kimlik doğrulama sorunlarında bağlantı yöntemini, kullanılan kimlik bilgisini ve erişim kapsamını birlikte kontrol etmek, hatayı güvenliği zayıflatmadan çözmene yardımcı olur.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara