🐙 Programinės įrangos kūrėjų saugumo vadovas ✓ Privalomas atitikimas

Išsamus GitHub 2FA nustatymo, SMS atsarginio varianto ir atkūrimo kodų gidas

Didėjant atvirojo kodo programinės įrangos tiekimo grandinės atakų skaičiui visame pasaulyje, GitHub reikalauja privalomo dviejų veiksnių autentifikavimo (2FA) visiems prisidedantiems kūrėjams. Deja, tūkstančiai inžinierių kas mėnesį visiškai praranda prieigą prie savo organizacijų ir privačių saugyklų dėl apleistų atkūrimo kodų. Šiame techniniame gide nagrinėjamas TOTP konfigūravimas, šaltasis atkūrimo kodų archyvavimas, SSH raktų sąveika ir avarinis kriptografinis paskyros atrakinimas.

2FA
2FA-Tool Saugumo inžinerijos komanda
Atnaujinta 2026 m. spalio mėn.
Numatomas skaitymo laikas: 13 min. (daugiau nei 2 400 žodžių)
GitHub 2FA Atkūrimo kodai Tiekimo grandinė
💡 Kūrėjų išvados (TL;DR)
  • Privalomas reikalavimas yra nuolatinis: Kūrėjai, kurie nesukonfigūruoja 2FA iki nustatyto termino, blokuojami nuo veiksmų žiniatinklyje ir pašalinami iš organizacijos saugyklų.
  • Atkūrimo kodai yra jūsų gelbėjimosi liemenė: 16 sugeneruotų atkūrimo kodų yra vienkartiniai. Nedelsdami išsaugokite juos šifruotoje saugykloje arba neprisijungusiame fiziniame atspaude.
  • Git slaptažodžiai nebeveikia: HTTPS Git push operacijos negali priimti interaktyvių 6 skaitmenų kodų. Privalote naudoti SSH raktus arba konkrečios apimties asmeninės prieigos raktus (PAT).
  • Kriptografinis paskutinis šansas: Jei praradote telefoną ir kodus, galite įrodyti nuosavybę pasirašydami tapatybės iššūkį anksčiau registruotu vietiniu SSH privačiuoju raktu.
01

GitHub privalomos 2FA politikos apžvalga ir saugumo pagrindimas

Istoriškai pažeisti programuotojų prieigos duomenys sukeldavo katastrofiškus programinės įrangos tiekimo grandinės pažeidimus. Garsūs incidentai – tokie kaip event-stream, ua-parser-js, ctx ir colors.js paketų užgrobimas npm ir PyPI ekosistemose – parodė, kad viena pavogta paskyra gali sukelti pavojų šimtams tūkstančių komercinių ir ypatingos svarbos infrastruktūros projektų.

Užpuolikai renka duomenis naudodami nutekintų slaptažodžių sąrašus, fišingo infrastruktūrą ir užkrėstas priklausomybes. Kadangi programinės įrangos inžinieriai dažnai turi administratoriaus prieigą prie kodo ir CI/CD diegimo vamzdynų, kodo autorių apsauga tapo tarptautinio saugumo klausimu.

Reaguodamas į tai, GitHub įdiegė etapais vykdomą visuotinį reikalavimą, nurodantį privalomą dviejų veiksnių autentifikavimą visiems kodo autoriams, paketų leidėjams, įmonių naudotojams ir organizacijų nariams:

📌 2FA nustatymo termino praleidimo pasekmės
  • GitHub internetinėje sąsajoje rodomas priverstinis blokavimo langas, draudžiantis peržiūrėti Pull Requests, komentuoti Issues ir administruoti saugyklas, kol nebus baigtas 2FA nustatymas.
  • Įmonių organizacijos, reikalaujančios 2FA, automatiškai pašalins reikalavimų nesilaikančius narius, nedelsdamos atimdamos rašymo teises ir prieigą prie saugyklų.
  • Automatizuoti darbo eigos procesai, npm paketų skelbimo raktai ir detalūs saugyklų leidimai įšaldomi, kol nepatvirtinama paskyros saugumo atitiktis.
02

Nuoseklus vadovas: TOTP autentifikavimo priemonės susiejimas

Nors GitHub palaiko SMS, mobiliuosius pranešimus ir aparatinius raktus, RFC 6238 TOTP autentifikavimo programėlės (pvz., Google Authenticator, Bitwarden, 2FA-Tool) yra auksinis standartas dėl nepriklausomybės nuo tiekėjų ir patikimo veikimo neprisijungus:

1

1 veiksmas: eikite į autentifikavimo nustatymus

Prisijunkite prie GitHub. Spustelėkite savo profilio nuotrauką viršutiniame dešiniajame kampe ➔ Settings. Kairėje šoninėje juostoje skiltyje „Access“ pasirinkite Password and authentication.

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

2 veiksmas: nuskaitykite QR kodą ir išsaugokite neapdorotą Base32 raktą

GitHub pateikia optinį QR kodą šalia tekstinės nuorodos: „enter this text code instead“ (įveskite šį tekstinį kodą).

💡 Saugumo patarimas: Spustelėkite tekstinę nuorodą ir nukopijuokite 32 simbolių Base32 slaptąją eilutę (pvz., A3J5N2O9...). Išsaugokite ją savo šifruotoje slaptažodžių tvarkyklėje. Šis pradinis raktas leidžia atkurti autentifikavimo kodus bet kuriame įrenginyje, jei jūsų telefonas būtų sunaikintas.
3

3 veiksmas: įveskite 6 skaitmenų kodą patvirtinimui

Nuskaitykite kodą savo mobiliąja programėle. Įveskite ekrane rodomą kintantį 6 skaitmenų skaičių į GitHub patvirtinimo laukelį ir spustelėkite „Continue“.

03

Atkūrimo kodų archyvavimo standartai ir kriptografinė higiena

Sėkmingai susiejus TOTP, GitHub iš karto parodo langą su 16 šešioliktainių kodų su brūkšneliais (pvz., d4a2b-98f12). Šio lango uždarymas neišsaugojus kodų yra dažniausia priežastis, kodėl kūrėjai visam laikui praranda prieigą prie savo paskyrų.

🚨 Atkūrimo kodų kriptografinės savybės

1. Tik vienkartinis naudojimas: Kiekvienas atkūrimo kodas negrįžtamai panaikinamas po pirmojo panaudojimo vietoje TOTP kodo.
2. Aukščiausia prieigos teisė: Atkūrimo kodas apeina trūkstamą techninę įrangą ir suteikia momentinę prieigą prie paskyros.
3. Serverio maišymas be žinojimo (Zero-Knowledge): GitHub saugo šiuos kodus kaip negrįžtamas vienkryptes kriptografines maišas. GitHub pagalbos inžinieriai jokiomis aplinkybėmis negali matyti ar atkurti jūsų pradinių kodų!

Rekomenduojama trijų lygių šaltojo saugojimo strategija:

🥇 Priedas slaptažodžių saugykloje

Atsisiųskite failą github-recovery-codes.txt ir prisekite jį prie savo GitHub įrašo 1Password, Bitwarden arba KeePassXC programoje naudodami Argon2id pagrįstus raktus.

🥈 Izoliuota aparatinė saugykla

Išsaugokite tekstinį failą VeraCrypt užšifruotame neprisijungusiame USB diske, atjungtame nuo vietinių tinklų ir debesijos sinchronizavimo paslaugų.

🥉 Drėgmei atsparus fizinis atspaudas

Atspausdinkite popierinę kopiją, ją laminuokite ir padėkite į namų seifą, kad apsisaugotumėte nuo nuotolinių kenkėjiškų programų.

Įspėjimas dėl iškarpinės (Clipboard) nutekėjimo: Kopijuodami 16 atkūrimo kodų, atkreipkite dėmesį į iškarpinės istorijos tvarkykles (pvz., Alfred, Raycast arba Windows Clipboard History). Atkūrimo kodus, saugomus atviro teksto pavidalu iškarpinės duomenų bazėse, gali perimti net žemo lygio kenkėjiška programa. Įklijavę atkūrimo kodus į šifruotą saugyklą, nedelsdami išvalykite iškarpinės buferį.
04

Atsarginiai autentifikavimo metodai: SMS prieš Passkeys ir GitHub Mobile

GitHub leidžia konfigūruoti antrinius atsarginius mechanizmus. Peržiūrėkite mūsų saugumo vertinimą:

Metodas Atsparumas fišingui SIM keitimo (SIM-Swap) pažeidžiamumas Vertinimas ir praktinis panaudojimas
Passkeys / FIDO2 saugumo raktai Absoliutus (WebAuthn kilmės susiejimas užkerta kelią fišingui) Atsparus ⭐⭐⭐⭐⭐ Pagrindinė rekomendacija (YubiKey / Touch ID)
TOTP autentifikavimo programėlė Vidutinis (pažeidžiama realaus laiko atvirkštiniams tarpiniams serveriams) Atspari ⭐⭐⭐⭐ Universalus standartas (jokios tinklo priklausomybės)
GitHub Mobile Push patvirtinimas Vidutinis (reikalingas 2 skaitmenų skaičiaus patvirtinimas) Atsparus ⭐⭐⭐⭐ Puikus kasdienis patogumas
SMS patvirtinimo atsarginis variantas Nulinis (nešifruoti SS7 signalai, lengvai perimami) Didelė rizika ⭐ Nerekomenduojama atsakingiems kodo prižiūrėtojams
05

Terminalo Git darbo eigos: SSH raktai, PAT ir 2FA sąveika

Aktyvavę 2FA, programuotojai dažnai susiduria su terminalo klaidomis atlikdami įprastą kodo išsiuntimą (push):

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

Techninė priežastis: Git protokolas negali apdoroti interaktyvių 6 skaitmenų TOTP užklausų. Todėl GitHub visiškai panaikino paskyros slaptažodžių naudojimą HTTPS Git užklausoms, kai įjungtas 2FA.

🔑 A variantas: SSH raktų autentifikavimas (Rekomenduojama)

Naudoja viešojo rakto kriptografiją (rekomenduojama: ed25519). SSH ryšiai autentifikuojami per vietinius kriptografinius privačiuosius raktus ir visiškai apeina žiniatinklio 2FA be jokių slaptažodžio užklausų.

ssh-keygen -t ed25519 -C "[email protected]"
🎫 B variantas: Asmeninės prieigos raktai (PAT)

Jei HTTPS protokolas yra privalomas, eikite į Settings ➔ Developer settings ➔ Personal access tokens ir sugeneruokite ribotos apimties prieigos raktą. Paprašius slaptažodžio terminale, įklijuokite PAT vietoj paskyros slaptažodžio.

SSH komitų pasirašymas prieš autentifikavimą: Atkreipkite dėmesį, kad SSH rakto naudojimas repozitorijų klonavimui ir siuntimui skiriasi nuo kriptografinio komitų pasirašymo. Galite naudoti tą pačią Ed25519 raktų porą komitų pasirašymui naudodami git config commit.gpgsign true ir git config gpg.format ssh, užtikrindami patvirtintus autoriaus ženklelius GitHub kartu su griežta 2FA prieigos kontrole.

06

Avarinis atkūrimas: užrakintų paskyrų atrakinimas be 2FA

Kritiniu atveju, kai praradote ir 2FA telefoną, ir atkūrimo kodų dokumentą, GitHub siūlo paskutinį kriptografinį gelbėjimosi ratą: SSH rakto parašo iššūkį (SSH Key Signature Challenge).

1
Pradėkite paskyros atblokavimo apeliaciją Prisijungimo 2FA lange spustelėkite „Unable to verify via 2FA?“ ➔ pasirinkite „Use emergency recovery code“ ➔ jei kodo neturite, spustelėkite „Request two-factor authentication reset“.
2
Patvirtinkite vienkartinį kodą el. paštu GitHub išsiunčia 6 skaitmenų patvirtinimo PIN kodą į jūsų pagrindinį patvirtintą el. pašto adresą. Įveskite kodą, kad pereitumėte prie tapatybės patvirtinimo.
3
Atlikite vietinį terminalo SSH rakto iššūkį GitHub sugeneruoja unikalų iššūkio tekstą (nonce) ir nurodo jį pasirašyti programuotojo darbo stoties terminale:
echo "UniqueChallengeString" | ssh-keygen -Y sign -n "github" -f ~/.ssh/id_ed25519
Įklijuokite sugeneruotą parašo bloką atgal į interneto portalą. GitHub matematiškai patikrina, ar parašas atitinka jūsų registruotą SSH viešąjį raktą, taip galutinai įrodydama paskyros nuosavybę ir atrakindama jūsų profilį po peržiūros laikotarpio.
🔒 Kliento pusės kriptografinė smėliadėžė

Patikrinkite savo GitHub TOTP slaptąjį raktą

Prieš patvirtindami nustatymus, išbandykite savo neapdorotą Base32 raktą su 2FA-Tool. Visi skaičiavimai atliekami vietiškai naršyklėje per Web Crypto be jokių duomenų perdavimų.

Atidaryti internetinį generatorių