การเซ็น Commit ด้วย GPG Key เป็นวิธีที่นักพัฒนาซอฟต์แวร์ใช้เพื่อยืนยันความถูกต้องและความน่าเชื่อถือของโค้ดที่ส่งขึ้นไปยัง GitHub โดยการตั้งค่า GPG Key ช่วยให้ Commit ของเรามีสถานะ "Verified" บน GitHub และลดความเสี่ยงที่โค้ดจะถูกแก้ไขโดยไม่ได้รับอนุญาต บทความนี้จะแนะนำการตั้งค่า GPG Key ตั้งแต่ต้นจนจบ
ขั้นตอนที่ 1: ตรวจสอบ GPG Key ที่มีอยู่
ก่อนสร้าง GPG Key ใหม่ ให้ตรวจสอบว่าเครื่องของคุณมี GPG Key อยู่หรือไม่ โดยรันคำสั่ง:
gpg --list-keys
ตัวอย่างผลลัพธ์:
pub rsa4096 2025-01-05 [SC]
39143C6B7D955F12594CDA0E281074416BC3D599
uid [ultimate] boychawin (github) <[email protected]>
sub rsa4096 2025-01-05 [E]
หากพบ GPG Key อยู่แล้ว คุณสามารถใช้งาน Key นั้นได้ทันที แต่หากยังไม่มี ให้ดำเนินการต่อไปยังขั้นตอนถัดไป
ขั้นตอนที่ 2: สร้าง GPG Key ใหม่
ใช้คำสั่งด้านล่างเพื่อสร้าง GPG Key:
gpg --full-generate-key
โปรแกรมจะถามข้อมูลต่อไปนี้:
- ชนิดของ Key: เลือก
1
(RSA and RSA) - ขนาดของ Key: กำหนดเป็น
4096
(ปลอดภัยที่สุด) - อายุการใช้งาน: พิมพ์
0
(ไม่มีวันหมดอายุ) แล้วกดy
เพื่อยืนยัน - ข้อมูลผู้ใช้:
Real name: พิมพ์ชื่อจริง (เช่น
boychawin
) Email address: ใส่อีเมล (ต้องตรงกับ GitHub) เช่น[email protected]
Comment: ใส่ข้อความ เช่นconnect github
- สุดท้ายเลือก
O
เพื่อยืนยัน
ตัวอย่างข้อความยืนยัน:
You selected this USER-ID:
"boychawin (connect github) <[email protected]>"
gpg --full-generate-key
ขั้นตอนที่ 3: อัปโหลด Public GPG Key ไปยัง GitHub
- ส่งออก Public GPG Key: ใช้คำสั่ง:
gpg --armor --export 39143C6B7D955F12594CDA0E281074416BC3D599
(แทนที่ 39143C6B7D955F12594CDA0E281074416BC3D599 ด้วย Key ID ของคุณ)
ผลลัพธ์จะเป็นข้อความที่เริ่มต้นด้วย:
-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----
- เพิ่ม GPG Key ลงใน GitHub:
- ไปที่ GitHub Settings > SSH and GPG keys > New GPG Key
- วาง Public Key ที่คัดลอกมาลงในช่อง และกด Add GPG Key
ขั้นตอนที่ 4: ตั้งค่า Git ให้ใช้ GPG Key
- บอก Git ให้ใช้ GPG Key สำหรับการเซ็น Commit:
git config --global user.signingkey 39143C6B7D955F12594CDA0E281074416BC3D599
git config --global commit.gpgsign true
(แทนที่ Key ID ด้วยของคุณ)
- ตรวจสอบว่าการตั้งค่าสำเร็จแล้ว:
git config --global --list
คุณควรเห็นค่า user.signingkey และ commit.gpgsign ในผลลัพธ์
ขั้นตอนที่ 5: ทดสอบ Commit พร้อม GPG Signing
- สร้าง Commit ใหม่:
git commit -S -m "Test commit with GPG signing"
(ออปชัน -S คือการเซ็น Commit ด้วย GPG Key)
- Push ขึ้นไปยัง GitHub:
git push
- บน GitHub คุณจะเห็น Commit พร้อมสถานะ "Verified" (เครื่องหมายถูกสีเขียว)
ข้อควรรู้: การแก้ปัญหา
- ปัญหา GPG Signing Failed: หากเห็นข้อความ gpg: signing failed อาจเกิดจาก GPG Agent ไม่ทำงาน ให้รันคำสั่ง:
gpg --list-keys
- สำหรับ MacOS: ติดตั้ง pinentry-mac เพื่อจัดการ Passphrase:
brew install pinentry-mac
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent
สรุป
การตั้งค่า GPG Key ช่วยเพิ่มความน่าเชื่อถือและความปลอดภัยให้กับการพัฒนาโค้ดของคุณบน GitHub เมื่อเซ็ตอัพสำเร็จ Commit ของคุณจะมีสถานะ "Verified" ซึ่งเป็นตัวบ่งชี้ความถูกต้องและความน่าเชื่อถือ