Modül 6 · Privacy, Security, Administration · ⏱ 12 dakika

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öntemKullanımNe zaman?
Username + PasswordWeb UISadece browser girişi
2FA (TOTP/Security key)Web UI ek katmanHer zaman etkinleştirilmeli
HTTPS + PATGit push/pullCI/CD, script, API
SSH keyGit push/pullLokal geliştirme
GitHub CLI (gh auth login)CLI işlemlerigh komutları
GitHub App tokenOtomasyonBot 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öntemGüvenlikKolaylık
Security key (FIDO2)En yüksekOrta
PasskeyÇok yüksekYüksek
TOTP app (Authy, Google Auth)YüksekOrta
SMSDüşü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.