Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ GPG-ΠΊΠ»ΡΡΠ° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² GitVerse, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ GPG-ΠΊΠ»ΡΡ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅Π³ΠΎ Π΅ΡΠ΅ Π½Π΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ. ΠΡΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ: macOS, Windows ΠΈ Linux.
1. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° GPG
GPG (GNU Privacy Guard) β ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ GPG-ΠΊΠ»ΡΡΠ°ΠΌΠΈ. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π½Π° Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅:
- macOS: GPG Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ GnuPG ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ Π²ΡΠΎΠ΄Π΅
brew install gnupg; - Windows: ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Git for Windows, GPG ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½. ΠΠ½Π°ΡΠ΅ ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ GnuPG Π΄Π»Ρ Windows;
- Linux: Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ.
sudo apt install gnupg # Ubuntu/Debian sudo dnf install gnupg # Fedora
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» (macOS/Linux) ΠΈΠ»ΠΈ Git Bash (Windows).
2. ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠ»ΡΡΠ°
Π ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄:
gpg --full-generate-key # Π΄Π»Ρ GPG 2.1.17 ΠΈ Π½ΠΎΠ²Π΅Π΅ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ)ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅ΡΡΡ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π° ΡΡΠ°ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Linux), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅:
gpg --default-new-key-algo rsa4096 --gen-key3. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠ»ΡΡΠ°
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π·Π°ΠΏΡΠΎΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
Π’ΠΈΠΏ ΠΊΠ»ΡΡΠ°
ΠΡΠ±Π΅ΡΠΈΡΠ΅ (1) RSA and RSA β ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ².
Π Π°Π·ΠΌΠ΅Ρ ΠΊΠ»ΡΡΠ°
ΠΡΠΈΠΌΠΈΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β 4096 Π±ΠΈΡ β Π΄Π»Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
Π‘ΡΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
ΠΠ°ΠΆΠΌΠΈΡΠ΅ Enter, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠ»ΡΡ Π±Π΅ΡΡΡΠΎΡΠ½ΡΠΌ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΊΠ»ΡΡΠΈ, ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΡΡΠΎΠΊ.
ΠΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
ΠΠΎΡΠ»Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠ΄ΠΊΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ O (OK), ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ.
4. Π£ΠΊΠ°ΠΆΠΈΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΠ°ΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ°Ρ Π²Π²Π΅ΡΡΠΈ:
- ΠΠΌΡ;
- Email-Π°Π΄ΡΠ΅Ρ β ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π½ΡΠΌ email Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΠΈΠ»Π΅ GitVerse;
- ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ).
ΠΠ°ΠΆΠ½ΠΎ: ΠΡΠ»ΠΈ email Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½ Π² GitVerse, ΠΊΠΎΠΌΠΌΠΈΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°.
5. ΠΠ°Π΄Π°ΠΉΡΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΡ passphrase
ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°. ΠΠ½ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ°.
6. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΊΠ»ΡΡ ΡΠΎΠ·Π΄Π°Π½:
gpg --list-secret-keys --keyid-format=longΠ Π²ΡΠ²ΠΎΠ΄Π΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ Π²ΡΠΎΠ΄Π΅:
sec rsa4096/3AA5C34371567BD2 2025-12-18 [SC]ΠΠ΄Π΅ΡΡ 3AA5C34371567BD2 β ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ° (GPG ID).
ΠΠ»Ρ Linux: Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
gpg2. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅:gpg2 --list-keys --keyid-format=longΠ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ Git Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
gpg2:git config --global gpg.program gpg2
7. ΠΠΊΡΠΏΠΎΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°
Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΡΠ°ΡΡΡ ΠΊΠ»ΡΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ASCII-armored:
gpg --armor --export 3AA5C34371567BD2Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π°Π³
--export-options export-minimal, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ:gpg --armor --export --export-options export-minimal 3AA5C34371567BD2
ΠΡΠ²ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----Π‘ΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π²Π΅ΡΡ Π±Π»ΠΎΠΊ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΡΠΎΠΊΠΈ Ρ BEGIN ΠΈ END.
8. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° Π² GitVerse
- ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ Π² GitVerse.
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ°Π·Π΄Π΅Π» ΠΠ»ΡΡΠΈ SSH/GPG.
- ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ ΠΠ»ΡΡΠΈ GPG.
- ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΠΎΠ±Π°Π²ΠΈΡΡ GPG.
- ΠΡΡΠ°Π²ΡΡΠ΅ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ.
- Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΡΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ, Π±ΡΠ΄ΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ Β«ΠΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Β».
ΠΠ°ΠΆΠ½ΠΎ: Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ GitVerse Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΊΠ»ΡΡΠ° Π² ΠΏΡΠΎΡΠΈΠ»Π΅. ΠΡΠ»ΠΈ Π²Ρ ΡΠ΄Π°Π»ΠΈΡΠ΅ ΠΊΠ»ΡΡ, Π²ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΡΠ°Π½ΡΡ Π½Π΅Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ.
9. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Git Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ
Π§ΡΠΎΠ±Ρ Git Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π» Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
git config --global user.signingkey 3AA5C34371567BD2
git config --global commit.gpgsign trueΠ’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ git commit Git Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π°Ρ ΠΊΠ»ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ Π²ΡΡΡΠ½ΡΡ (Π΅ΡΠ»ΠΈ Π°Π²ΡΠΎΠΏΠΎΠ΄ΠΏΠΈΡΡ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π°):
git commit -S -m "ΠΠ°Ρ ΠΊΠΎΠΌΠΌΠΈΡ"Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΈ passphrase Π² Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. ΠΠ΅Π· Π½ΠΈΡ Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.