ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Git Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ GPG-ΠΊΠ»ΡΡΠ°
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠΈΡΡ Git, ΠΊΠ°ΠΊΠΎΠΉ GPG-ΠΊΠ»ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ΅Π· ΡΡΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Git Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡ Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡ ΡΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΠΏΡΠΎΡΠΈΠ»Ρ GitVerse.
1. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΊΠ»ΡΡΠ°
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΉ GPG-ΠΊΠ»ΡΡ Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ:
gpg --list-secret-keys --keyid-format=longΠ Π²ΡΠ²ΠΎΠ΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠΎΠΊΠ° Π²ΡΠΎΠ΄Π΅:
sec rsa4096/3AA5C34371567BD2 2025-12-18 [SC]ΠΡΠ»ΠΈ ΠΊΠ»ΡΡΠ° Π½Π΅Ρ β ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΊ ΡΠ°Π·Π΄Π΅Π»Ρ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ GPG-ΠΊΠ»ΡΡΠ° .
π ΠΠ»Ρ Linux: Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
gpg2, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:gpg2 --list-keys --keyid-format=longΠ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ Git:
git config --global gpg.program gpg2
2. Π£ΠΊΠ°ΠΆΠΈΡΠ΅ Git, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ»ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΠ² Π²Π°Ρ GPG-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 3AA5C34371567BD2):
git config --global user.signingkey 3AA5C34371567BD2ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡ (subkey) Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°, ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π΅Π³ΠΎ ID (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
4BB6D45482678BE3):git config --global user.signingkey 4BB6D45482678BE3
3. ΠΠΊΠ»ΡΡΠΈΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
Π§ΡΠΎΠ±Ρ Git ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π» Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
git config --global commit.gpgsign true
git config --global tag.gpgSign trueΠ’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ git commit ΠΈΠ»ΠΈ git tag Git Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π°Ρ GPG-ΠΊΠ»ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ.
4. (ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ gpg: signing failed: Inappropriate ioctl for device, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΡΠ°ΠΉΠ» ~/.bashrc (ΠΈΠ»ΠΈ ~/.zshrc) ΡΡΡΠΎΠΊΡ:
[ -f ~/.bashrc ] && echo -e '\nexport GPG_TTY=$(tty)' >> ~/.bashrcΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ:
source ~/.bashrc5. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ:
git config --global user.signingkey
git config --global commit.gpgsign
git config --global tag.gpgSignΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ:
3AA5C34371567BD2
true
true6. ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠ°
Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ:
git commit -m "Π’Π΅ΡΡΠΎΠ²Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡ"Git Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅Ρ Π΅Π³ΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡ:
git log --show-signature -1Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ Π²Π°ΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ Π±ΡΠ΄ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π²Π°ΡΠΈΠΌ GPG-ΠΊΠ»ΡΡΠΎΠΌ, ΠΈ Π² GitVerse ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Π²Π°Ρ ΠΏΡΠΎΡΠΈΠ»Ρ.
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΈ passphrase β ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Ρ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ².