2FA, SSH key ve kimlik doğrulama yöntemleri
2FA, SSH keys and authentication methods
Bu derste neler öğreneceksin
- GitHub'a kimlik doğrulama yöntemlerini (HTTPS, SSH, token) karşılaştırmak
- 2FA (Two-factor authentication) nasıl etkinleştirilir ve neden önemlidir?
- SSH key çifti oluşturmak ve GitHub'a eklemek
- Personal Access Token (PAT) tiplerini ve kullanım senaryolarını anlamak
GitHub’a güvenli erişim için birden fazla kimlik doğrulama yöntemi mevcuttur. GH-900 bu yöntemlerin farkını, güvenlik faydalarını ve kullanım senaryolarını sorar.
GitHub’a erişim yöntemleri
| Yöntem | Kullanım | Ne zaman? |
|---|---|---|
| Username + Password | Web UI | Sadece browser girişi |
| 2FA (TOTP/Security key) | Web UI ek katman | Her zaman etkinleştirilmeli |
| HTTPS + PAT | Git push/pull | CI/CD, script, API |
| SSH key | Git push/pull | Lokal geliştirme |
| GitHub CLI (gh auth login) | CLI işlemleri | gh komutları |
| GitHub App token | Otomasyon | Bot uygulamaları |
2FA (Two-Factor Authentication)
2FA, hesap güvenliğini büyük ölçüde artırır. GitHub birkaç 2FA yöntemi destekler:
| Yöntem | Güvenlik | Kolaylık |
|---|---|---|
| Security key (FIDO2) | En yüksek | Orta |
| Passkey | Çok yüksek | Yüksek |
| TOTP app (Authy, Google Auth) | Yüksek | Orta |
| SMS | Düşük (SIM swap riski) | Yüksek |
Etkinleştirmek: Settings → Password and authentication → Two-factor authentication.
GitHub 2024’ten itibaren katkıcılar için 2FA’yı zorunlu hale getirdi.
Backup kodları
2FA etkinleştirilince backup (recovery) kodları indirilmeli ve güvenli yerde saklanmalı. Cihaz kaybedilince bunlar hesaba erişimi sağlar.
SSH key’ler
SSH key çifti: private key (bilgisayarında, paylaşılmaz) + public key (GitHub’a eklenir).
SSH key oluşturmak
# Ed25519 (önerilen)
ssh-keygen -t ed25519 -C "your.email@example.com"
# RSA (eski sistemler için)
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
Dosya konumu: ~/.ssh/id_ed25519 (private), ~/.ssh/id_ed25519.pub (public).
Public key’i GitHub’a eklemek
Settings → SSH and GPG keys → New SSH key → public key içeriği yapıştır.
# Public key'i kopyala
cat ~/.ssh/id_ed25519.pub
# çıktıyı GitHub'a yapıştır
SSH bağlantısını test etmek
ssh -T git@github.com
# "Hi username! You've successfully authenticated" mesajı beklenir
Personal Access Tokens (PAT)
Password’ün yerini alan token’lar HTTPS ile kullanılır. İki tip:
Classic PAT
- Geniş kapsamlı izinler
- Belirli repo’ya kısıtlanamaz
- Expiration: 30, 60, 90, 180 gün veya no expiration
Fine-grained PAT (önerilen)
- Belirli repo’lara kısıtlanabilir
- Granular izinler (read/write ayrımı)
- Expiration zorunlu (max 1 yıl)
Oluşturmak: Settings → Developer settings → Personal access tokens.
# HTTPS ile PAT kullanımı
git clone https://github.com/owner/repo.git
# Username: github_kullanici_adiniz
# Password: PAT token'iniz (şifre değil)
GPG key (commit imzalama)
Commit’lerin senden geldiğini doğrulamak için GPG imzası:
# GPG key oluştur
gpg --full-generate-key
# GitHub'a ekle
gpg --armor --export YOUR_KEY_ID
# Settings → SSH and GPG keys → New GPG key
# Git'i GPG imzalamak için ayarla
git config --global user.signingkey YOUR_KEY_ID
git config --global commit.gpgsign true
İmzalanmış commit’ler GitHub’da “Verified” rozeti gösterir.
Sınav perspektifinden dikkat noktaları
- SSH: key pair’dan oluşur; private key bilgisayarda, public key GitHub’da
- HTTPS + PAT: CI/CD için tercih edilir (SSH key yönetimi yerine)
- Fine-grained PAT daha güvenli — repo sınırlaması yapılabilir
- 2FA backup kodları kaybedilirse hesaba erişim zorlaşır — güvenli saklama kritik
- SSH key’in GitHub hesabından silinmesi mevcut bağlantıyı keser
Sırada ne var?
Sonraki derste Dependabot ve secret scanning temellerini öğreneceğiz.