การตั้งค่า GPG Key สำหรับ GitHub ยืนยันความถูกต้องของ Commit

Jan. 5, 2025 · boychawin

การเซ็น 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

โปรแกรมจะถามข้อมูลต่อไปนี้:

  1. ชนิดของ Key: เลือก 1 (RSA and RSA)
  2. ขนาดของ Key: กำหนดเป็น 4096 (ปลอดภัยที่สุด)
  3. อายุการใช้งาน: พิมพ์ 0 (ไม่มีวันหมดอายุ) แล้วกด y เพื่อยืนยัน
  4. ข้อมูลผู้ใช้: Real name: พิมพ์ชื่อจริง (เช่น boychawin) Email address: ใส่อีเมล (ต้องตรงกับ GitHub) เช่น [email protected] Comment: ใส่ข้อความ เช่น connect github
  5. สุดท้ายเลือก O เพื่อยืนยัน

ตัวอย่างข้อความยืนยัน:

You selected this USER-ID:
    "boychawin (connect github) <[email protected]>"
gpg --full-generate-key

ขั้นตอนที่ 3: อัปโหลด Public GPG Key ไปยัง GitHub

  1. ส่งออก Public GPG Key: ใช้คำสั่ง:
gpg --armor --export 39143C6B7D955F12594CDA0E281074416BC3D599

(แทนที่ 39143C6B7D955F12594CDA0E281074416BC3D599 ด้วย Key ID ของคุณ)

ผลลัพธ์จะเป็นข้อความที่เริ่มต้นด้วย:

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    ...
    -----END PGP PUBLIC KEY BLOCK-----
  1. เพิ่ม GPG Key ลงใน GitHub:
    • ไปที่ GitHub Settings > SSH and GPG keys > New GPG Key
    • วาง Public Key ที่คัดลอกมาลงในช่อง และกด Add GPG Key

ขั้นตอนที่ 4: ตั้งค่า Git ให้ใช้ GPG Key

  1. บอก Git ให้ใช้ GPG Key สำหรับการเซ็น Commit:
git config --global user.signingkey 39143C6B7D955F12594CDA0E281074416BC3D599
git config --global commit.gpgsign true

(แทนที่ Key ID ด้วยของคุณ)

  1. ตรวจสอบว่าการตั้งค่าสำเร็จแล้ว:
git config --global --list

คุณควรเห็นค่า user.signingkey และ commit.gpgsign ในผลลัพธ์


ขั้นตอนที่ 5: ทดสอบ Commit พร้อม GPG Signing

  1. สร้าง Commit ใหม่:
git commit -S -m "Test commit with GPG signing"

(ออปชัน -S คือการเซ็น Commit ด้วย GPG Key)

  1. Push ขึ้นไปยัง GitHub:
    git push
  1. บน 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" ซึ่งเป็นตัวบ่งชี้ความถูกต้องและความน่าเชื่อถือ

Tags: ssh , gpg-key