🐙 Varnostni priročnik za razvijalce ✓ Obvezna skladnost

Popoln vodnik za nastavitev GitHub 2FA, nadomestni SMS in kode za obnovitev

Ker se napadi na dobavno verigo odprtokodne programske opreme po vsem svetu stopnjujejo, GitHub zahteva obvezno dvofaktorsko avtentikacijo (2FA) za vse razvijalce, ki prispevajo kodo. Na žalost na tisoče inženirjev vsak mesec popolnoma izgubi dostop do svojih organizacij in zasebnih repozitorijev zaradi zanemarjenih kod za obnovitev. Ta tehnični vodnik zajema konfiguracijo TOTP, varno arhiviranje kod za obnovitev na hladnem, interakcije s ključi SSH in reševanje ob nujnem kriptografskem zaklepu računa.

2FA
Varnostna ekipa 2FA-Tool
Posodobljeno oktobra 2026
Ocenjen čas branja: 13 min (več kot 2.400 besed)
GitHub 2FA Kode za obnovitev Dobavna veriga
💡 Ključne ugotovitve za razvijalce (TL;DR)
  • Obvezna uveljavitev je trajna: Razvijalcem, ki ne konfigurirajo 2FA do določenega roka, je onemogočeno izvajanje spletnih dejanj in odvzet dostop do repozitorijev organizacije.
  • Kode za obnovitev so vaš rešilni jopič: 16 ustvarjenih kod za obnovitev je za enkratno uporabo. Takoj jih shranite v šifrirano shrambo ali v fizično tiskano obliko brez povezave.
  • Gesla za Git ne delujejo več: Potiski Git prek HTTPS ne morejo sprejeti interaktivnih 6-mestnih kod. Uporabiti morate ključe SSH ali osebne dostopne žetone (PAT) z ustreznim obsegom dovoljenj.
  • Kriptografska zadnja možnost: Če izgubite telefon in kode, lahko dokažete lastništvo tako, da podpišete identifikacijski izziv z uporabo svojega predhodno registriranega lokalnega zasebnega ključa SSH.
01

Pregled politike obvezne 2FA na GitHubu in varnostna utemeljitev

V preteklosti so ogrožene poverilnice razvijalcev povzročile katastrofalne ranljivosti v dobavni verigi programske opreme. Odmevni incidenti – kot je bil prevzem paketov event-stream, ua-parser-js, ctx in colors.js v ekosistemih npm in PyPI – so dokazali, da lahko en sam ukraden račun ogrozi več sto tisoč povezanih komercialnih projektov in kritičnih infrastruktur.

Napadalci zbirajo poverilnice z uporabo globalnih seznamov ukradenih gesel (credential stuffing), lažnega predstavljanja (phishing) in trojanskih odvisnosti razvijalcev. Ker programski inženirji redno delajo s skrbniškim dostopom do izvorne kode in cevovodov CI/CD, je zaščita avtorjev kode postala vprašanje mednarodne varnosti infrastrukture.

V odgovor na to je GitHub uvedel večfazno univerzalno zahtevo po dvofaktorski avtentikaciji za vse razvijalce, izdajatelje paketov, poslovne uporabnike in člane organizacij:

📌 Posledice zamude roka za registracijo 2FA
  • Spletni vmesnik GitHub preide v način zapore, ki prepoveduje pregledovanje zahtevkov za združitev (pull request), komentiranje težav in upravljanje repozitorijev, dokler nastavitev 2FA ni končana.
  • Poslovne organizacije, ki uveljavljajo 2FA, samodejno izključijo neskladne člane, s čimer jim takoj odvzamejo pravice do pisanja in privilegije repozitorija.
  • Avtomatizirani cevovodi, ključi za objavo paketov npm in podrobna dovoljenja za repozitorije so zamrznjeni, dokler ni potrjena varnostna skladnost računa.
02

Postopek seznanjanja avtentikatorja TOTP po korakih

Čeprav GitHub podpira SMS, potisna obvestila in varnostne ključe, aplikacija TOTP avtentikatorja po standardu RFC 6238 (npr. Google Authenticator, Bitwarden, 2FA-Tool) predstavlja zlati standard glede neodvisnosti od ponudnika in zanesljivosti brez povezave:

1

1. korak: Odprite nastavitve preverjanja pristnosti

Prijavite se v GitHub. Kliknite sliko svojega profila v zgornjem desnem kotu ➔ Settings. V levem navigacijskem meniju pod razdelkom »Access« izberite Password and authentication.

Pot: Settings ➔ Password and authentication ➔ Two-factor methods ➔ Set up authenticator app
2

2. korak: Skenirajte kodo QR in shranite neobdelani tajni ključ Base32

GitHub prikaže optično kodo QR skupaj z besedilno povezavo: »enter this text code instead«.

💡 Profesionalni varnostni nasvet: Kliknite besedilno povezavo in kopirajte 32-znakovni niz Base32 (npr. A3J5N2O9...). Shranite ga v svoj šifrirani upravitelj gesel. To alfanumerično seme vam omogoča ponovno izpeljavo avtentikacijskih žetonov na kateri koli napravi, če se vaš telefon uniči.
3

3. korak: Vnesite 6-mestno kodo za potrditev

Skenirajte kodo z mobilnim avtentikatorjem. Vnesite vrtečo se 6-mestno številko, prikazano na zaslonu, v potrditveno polje na GitHubu in kliknite »Continue«.

03

Standardi arhiviranja kod za obnovitev in kriptografska higiena

Po uspešnem seznanjanju TOTP GitHub takoj prikaže modalno okno s 16 šestnajstiškimi žetoni z vezaji (npr. d4a2b-98f12). Zaprtje tega okna brez trajne varnostne kopije je najpogostejši razlog za trajno izgubo dostopa do razvijalskih računov.

🚨 Kriptografske značilnosti kod za obnovitev

1. Samo za enkratno uporabo: Vsaka koda za obnovitev se po prvi uporabi namesto kode TOTP nepovratno razveljavi.
2. Glavna avtoriteta: Koda za obnovitev zaobide manjkajočo strojno opremo in omogoči takojšen dostop do računa.
3. Zgoščevanje na strežniku brez poznavanja vsebine (Zero-Knowledge): GitHub hrani te kode kot enosmerne kriptografske zgoščene vrednosti. Inženirji podpore GitHub pod nobenim pogojem ne morejo obnoviti ali prebrati vaših izvirnih kod!

Priporočena tristopenjska strategija hrambe na hladnem (Cold Storage):

🥇 Priloga v upravitelju gesel

Prenesite datoteko github-recovery-codes.txt in jo priložite svojemu vnosu za GitHub v orodjih 1Password, Bitwarden ali KeePassXC z uporabo glavnih ključev, izpeljanih z Argon2id.

🥈 Strojna shramba, ločena od omrežja (Air-Gapped)

Shranite besedilno datoteko na pogon USB, šifriran z VeraCrypt, ki je odklopljen iz lokalnih omrežij in orodij za sinhronizacijo v oblaku.

🥉 Vodoodporen fizični izpis

Natisnite fizični izvod na papir, ga laminirajte za zaščito pred vlago in shranite v domači sef ter se tako zavarujte pred zlonamerno programsko opremo na daljavo.

Opozorilo pred uhajanjem prek odložišča (Clipboard): Pri kopiranju 16 kod za obnovitev bodite pozorni na upravitelje zgodovine odložišča (kot so Alfred, Raycast ali zgodovina odložišča v sistemu Windows). Občutljive kode za obnovitev v nešifriranih zbirkah podatkov lahko ukrade zlonamerna programska oprema. Vedno počistite medpomnilnik odložišča takoj po lepljenju poverilnic v svojo šifrirano shrambo.
04

Nadomestne metode preverjanja pristnosti: SMS v primerjavi s Passkeys in GitHub Mobile

GitHub omogoča nastavitev sekundarnih nadomestnih mehanizmov. Preglejte našo varnostno primerjavo trenutnih overitvenih vektorjev:

Metoda Odpornost proti ribarjenju (Phishing) Ranljivost za zamenjavo kartice SIM Ocena in praktična uporaba
Passkeys / varnostni ključi FIDO2 Popolna (WebAuthn vezava na izvor preprečuje proxy ribarjenje) Imuna ⭐⭐⭐⭐⭐ Najboljše priporočilo (YubiKey / Touch ID)
Aplikacija avtentikatorja TOTP Zmerna (Ranljiva za povratne posrednike v realnem času) Imuna ⭐⭐⭐⭐ Univerzalno izhodišče (Brez odvisnosti od omrežja)
Potrditev s potisnim obvestilom v GitHub Mobile Zmerna (Zahteva preverjanje z dvomestno številko) Imuna ⭐⭐⭐⭐ Izjemno priročno za vsakodnevno rabo
Nadomestno preverjanje prek SMS Nična (Nešifrirano signaliziranje SS7, enostavno prestrezanje) Visoko tveganje ⭐ Ni priporočljivo za vzdrževalce pomembnih projektov
05

Poteki dela v terminalu Git: Ključi SSH, PAT in interakcija z 2FA

Po aktivaciji 2FA razvijalci pri običajnih potiskih kode v terminalu pogosto naletijo na napako:

remote: Support for password authentication was removed on August 13, 2021.
fatal: Authentication failed for 'https://github.com/username/repo.git/'

Tehnična utemeljitev: Protokol Git ne more obdelati interaktivnega dialoga za 6-mestno kodo TOTP. Zato je GitHub trajno ukinil avtentikacijo z geslom računa za zahteve Git prek HTTPS, ko je aktivirana 2FA.

🔑 Možnost A: Avtentikacija s ključem SSH (Priporočeno)

Uporablja kriptografijo javnih ključev (priporočeno: ed25519). Povezave SSH se avtenticirajo prek lokalnih zasebnih ključev in v celoti zaobidejo spletni 2FA brez ponavljajočih se zahtev po geslih.

ssh-keygen -t ed25519 -C "[email protected]"
🎫 Možnost B: Osebni dostopni žetoni (PAT)

Če je protokol HTTPS obvezen, odprite Settings ➔ Developer settings ➔ Personal access tokens in ustvarite žeton z ustreznimi dovoljenji. Ko vas terminal pozove k vnosu gesla, prilepite žeton PAT namesto gesla svojega računa.

Podpisovanje objav s ključi SSH v primerjavi s preverjanjem pristnosti: Uporaba ključa SSH za kloniranje in potiskanje repozitorijev se razlikuje od kriptografskega podpisovanja objav (commit signing). Isti par ključev Ed25519 lahko uporabite za podpisovanje objav z ukazoma git config commit.gpgsign true in git config gpg.format ssh, s čimer pridobite preverjene značke avtorja na GitHubu skupaj s strogim nadzorom dostopa 2FA.

06

Obnovitev po nesreči: Odklepanje zaklenjenih računov brez 2FA

V primeru katastrofalne izgube telefona z 2FA in dokumenta s kodami za obnovitev GitHub ponuja zadnjo kriptografsko rešilno bilko: Izziv s podpisom ključa SSH (SSH Key Signature Challenge).

1
Začnite postopek pritožbe ob zaklenjenem računu Pri pozivu za 2FA med prijavo kliknite »Unable to verify via 2FA?« ➔ izberite »Use emergency recovery code« ➔ če kode nimate, kliknite »Request two-factor authentication reset«.
2
Preverite enkratno kodo iz varnostnega e-poštnega sporočila GitHub pošlje 6-mestno potrditveno kodo PIN na vaš primarni preverjeni e-poštni naslov. Vnesite kodo za nadaljevanje preverjanja identitete.
3
Izvedite izziv s ključem SSH v lokalnem terminalu GitHub ustvari edinstven niz izziva (nonce) in vam naroči, da ga podpišete v terminalu svoje lokalne razvijalske postaje:
echo "UniqueChallengeString" | ssh-keygen -Y sign -n "github" -f ~/.ssh/id_ed25519
Prilepite generirani blok podpisa nazaj v spletni portal. GitHub matematično potrdi, da se podpis ujema z vašim registriranim javnim ključem SSH, s čimer nedvoumno potrdi lastništvo računa in po varnostnem obdobju odklene vaš profil.
🔒 Kriptografski peskovnik na strani odjemalca

Preizkusite svoj tajni ključ GitHub TOTP lokalno

Preden zaključite nastavitev, preizkusite svoj neobdelani niz Base32 v orodju 2FA-Tool. Vse zgoščene vrednosti se računajo lokalno v brskalniku prek Web Crypto API brez prenosa podatkov na strežnik.

Odpri spletni generator