# GitHub token ve Git kimlik doğrulama: personal access token, Git Credential Manager, parolasız push

URL: https://skillaria.top/tr/guides/git/github-token-git-kimlik-dogrulama

13 Ağustos 2021'den beri GitHub, HTTPS üzerinden yapılan Git işlemlerinde hesap parolasını kabul etmez: bunun yerine GitHub token'ı (personal access token) veya tarayıcıda oturum açan ve kimlik bilgilerini kendisi saklayan Git Credential Manager kullanılır. Token, github.com üzerinde Settings → Developer settings bölümünden oluşturulur, git push veya git clone sırasında parola yerine girilir ve credential.helper tarafından saklanır.

## Git neden artık GitHub parolasını kabul etmiyor

Komut `git push` olduğunda github.com kullanıcı adı ve parolanızı giriyor, ama reddediliyorsanız sorun bir yazım hatası değildir. 13 Ağustos 2021'den itibaren GitHub, HTTPS üzerinden yapılan Git işlemleri için parolayla girişi kapattı. Parola yerine GitHub token'ı (personal access token, PAT) ya da Git Credential Manager'ın yönettiği tarayıcı tabanlı kimlik doğrulama kullanılmalıdır.

Hata mesajı şöyle görünür:

```
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/... for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/user/project.git/'
```

Sebep basittir: hesap parolası her şeye tam erişim verir, tek bir repository ile sınırlandırılamaz ve iptal etmesi zordur. Token ise bir göreve özel oluşturulur, son kullanma tarihi ve yetki kümesi vardır; sızarsa bir dakika içinde parolayı değiştirmeden silinebilir. GitLab ve Bitbucket de aynı yolu izledi; aşağıda anlatılanlar onlar için de büyük ölçüde geçerlidir.

## Yetkilendirmenin iki yolu: HTTPS ve SSH

Git, uzak repository ile iki protokolden biriyle konuşur ve giriş yönteminiz buna göre değişir.

| Protokol | Repository adresi | Kimlik doğrulama |
| --- | --- | --- |

| HTTPS | `https://github.com/user/project.git` | Token veya Git Credential Manager (tarayıcıyla giriş) |

| SSH | `git@github.com:user/project.git` | SSH anahtar çifti: özel anahtar sizde, genel anahtar GitHub ayarlarında |

SSH anahtarı bir kez ayarlanır; bundan sonra Git ne kullanıcı adı ne de parola sorar. Oluşturma ve GitHub'a ekleme adımları Git yapılandırma yazısında ayrıntılı anlatılmıştır; burada HTTPS üzerinde duruyoruz, çünkü yeni başlayanların parola isteğiyle en çok karşılaştığı yer burasıdır. Repository'nizin hangi protokolü kullandığını şu komutla öğrenebilirsiniz:

```
git remote -v
origin  https://github.com/user/project.git (fetch)
origin  https://github.com/user/project.git (push)
```

## GitHub token nasıl oluşturulur (personal access token)

Personal access token, GitHub'ın programatik erişim için parola yerine verdiği uzun ve rastgele bir dizedir. Classic token'lar `ghp_` ile, fine-grained token'lar `github_pat_` ile başlar. Token yalnızca oluşturulduktan hemen sonra bir kez gösterilir; bu yüzden hemen bir parola yöneticisine kopyalayın.

### Adım adım

1. github.com'a girin, sağ üstteki avatara tıklayın ve **Settings**'i açın.
2. Sol menünün altında **Developer settings**, ardından **Personal access tokens** seçeneğini seçin.
3. Türü seçin: **Fine-grained tokens** (önerilir) veya **Tokens (classic)**, ve yeni token oluşturma düğmesine basın.
4. Anlaşılır bir ad verin (örneğin «dizüstü, iş»), son kullanma süresini ve izinleri belirleyin.
5. Oluştur düğmesine basın ve token'ı hemen kopyalayın.

### Fine-grained mi classic mi

Fine-grained token belirli repository'lerle ve tek tek izinlerle sınırlıdır. Günlük kod çalışması için ilgili repository'leri seçin ve repository izinlerinde **Contents: Read and write** verin: clone, pull ve push için yeterlidir. Yalnızca özel bir repository'yi okuyacaksanız Read-only yeter.

Classic token tüm repository'lerinizde birden geçerlidir. Push için `repo` kapsamı, `.github/workflows` içindeki dosyaları değiştirmek için ayrıca `workflow` gerekir. Classic daha basittir ama daha tehlikelidir: sızarsa hesabınızın tamamına erişim olur.

### Son kullanma süresi

GitHub birkaç süre seçeneği sunar ve kendi tarihinizi de belirtmenize izin verir. Süresiz bir token oluşturulabilir, ama bu önerilmez: unutulmuş bir kalıcı token klasik bir güvenlik açığıdır. 30–90 gün iyi bir seçimdir; GitHub'ın süre dolmadan e-posta ile gönderdiği hatırlatmada yeniden oluşturun.

## Token ile git push ve git clone

Token kullanmak göründüğünden daha kolaydır: Git «Password» sorar ve parola yerine token'ı yapıştırırsınız.

```
$ git push origin main
Username for 'https://github.com': your-login
Password for 'https://your-login@github.com':

## FAQ

**GitHub token'ını oluşturduktan sonra tekrar görebilir miyim?**

Hayır, GitHub token'ı yalnızca bir kez gösterir. Kaydetmediyseniz eski token'ı silin ve yeni bir tane oluşturun.

**Herkese açık bir repository'yi git clone ile almak için token gerekir mi?**

Hayır, herkese açık repository'ler token olmadan klonlanır ve git pull ile güncellenir; token özel repository'ler ve git push için gerekir.

**Token'ın süresi dolunca ne olur?**

Git Authentication failed hatası vermeye başlar. Yeni bir token oluşturun (ya da eskisinde Regenerate düğmesini kullanın), kayıtlı kimlik bilgilerini silin ve bir sonraki push'ta yeni token'ı girin.

**GitHub token'ı iki faktörlü doğrulama ile çalışır mı?**

Evet; hatta 2FA açıkken token tam da bu yüzden gerekir: Git işlemlerinde parolanın ve doğrulama kodunun yerini alır. Git Credential Manager ise tarayıcıyla girişte 2FA'yı kendisi tamamlar.

**Git kullanıcı adını ve parolasını nerede saklar?**

Git bunları kendisi saklamaz; bunu credential helper yapar: Windows Kimlik Bilgileri Yöneticisi, macOS Anahtarlık, Linux'ta Secret Service veya helper store kullanılıyorsa ~/.git-credentials dosyası.


---
Source: Skillaria.Top (https://skillaria.top)
