เนื่องจากวันนี้กำลังจะเข้าใช้งาน GitHub ผ่าน terminal เพื่อทำการ clone โปรเจคท์ และเมื่อมีการ clone แล้วทาง GitHub ก็จะ require 2 สิ่งนี้คือ username และ password ใช่ไหมครับ ซึ่งพอหลังจากใส่ username เสร็จสิ้นก็เป็น password ซึ่งพอพิมพ์ใส่ลงไปเสร็จสิ้นตามปกติ พอกด enter แล้วเกิดข้อความ error ดังนี้
“Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.”
ซึ่งนั่นก็หมายความว่าการใช้รหัสผ่านในการ authenticate นั้นทาง GitHub ไม่ซัพพอร์ตตรงส่วนนี้อีกต่อไป และก็ได้เข้าไปตามลิ้งค์ปลายทางที่ GitHub แจ้งไว้ด้านล่าง
“Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.”
GitHub ชัตดาวน์(หยุด) password ในการ authenticate
ซึ่งทาง GitHub เองได้แจ้งอย่างเป็นทางในเดือนกรกฏาคม 2020 หรือปีที่ผ่านมาว่าจะทำการยกเลิก authentication ด้วยรหัสผ่าน (password) และจะให้ไปใช้ Token-based authentication อย่างเช่น personal access token, OAuth, SSH หรือ GitHub App token แทน ซึ่งเหตุผลในการสร้างเลเยอร์ขึ้นมาอีกชั้น ให้เกิดความปลอดภัยต่อระบบมากยิ่งขึ้น ซึ่งทาง GitHub มีการพัฒนาตรงส่วนนี้อยู่ตลอดเวลา
ซึ่งจะเริ่มต้นกำหนดใช้อย่างเป็นทางการในวันที่ 13 สิงหาคม 2564 (ผ่านมาได้ 5 วันแล้วนับจากวันที่เขียนในขณะนี้ วันที่ 18 สิงหาคม)
ฟีเจอร์หรือส่วนไหนที่ได้รับผลกระทบในครั้งนี้ ?
- Command line access
- Desktop apps ที่ใช้งาน Git (แต่ GitHub desktop ไม่ได้รับผลกระทบในครั้งนี้)
- Apps/Services ที่เข้าถึง GitHub repositories โดยตรงผ่านการใช้รหัสผ่าน
ฟีเจอร์หรือส่วนไหนที่ไม่ได้รับผล ?
- GitHub enterprise
- ผู้ใช้ที่เปิดใช้งาน 2FA ไว้ก่อนหน้านี้แล้ว โดยการใช้งาน 2FA ก็ต้องมีการเรียกใช้ token หรือผ่าน SSH-based authentication อยู่ก่อนหน้านี้แล้ว
ข้อดีของ Token เมื่อเทียบกับ password
- Unigue: Token มีความเฉพาะเจาะจงและไม่ซ้ำ ถูกสร้างขึ้นมาต่อการใช้งานนั้น ๆ หรือต่ออุปกรณ์นั้น ๆ
- Limited: สามารถจำกัดสโคปการใช้ ต่อการใช้งานนั้น ๆ ได้
- Rondom: ไม่จำเป็นต้องจดจำเหมือนรหัสผ่าน ที่บางทีอาจจะโดนโจมตีจากผู้ไม่ประสงค์ดีหรือแฮ็คเกอร์ด้วยวิธีการที่เรียกว่า brute force attack หรือการสุ่มเดารหัสผ่านต่าง ๆ และ token ที่แรนดอมก็จะไม่อยู่ในพจนานุกรม ซึ่งทำให้ยากหรือเป็นไปไม่ได้เลยที่จะคาดเดาได้
- etc
คอนฟิก GitHub Authentication และเปิดใช้งาน 2FA (Two Factor Authentication)
- ไปที่หน้า profile แล้วเลือก “settings”

- เลือก “Account security”

- ทำการ enable 2FA โดยคลิก “Enable two-factor authentication”

- เลือก “Set up using an app”
โดยขั้นตอนนี้จะมี 2 ตัวเลือกให้เลือกคือ “Set up using an app” และ “Set up using SMS” ซึ่งตัวเลือกที่สองนั้นต้องดูว่าประเทศปลายทางนั้นรองรับวิธีนี้หรือไม่ พอคลิกเข้าไปดู ประเทศไทยของเราไม่รองรับซะงั้น ซึ่งส่วนใหญ่ประเทศอื่นล้วนรองรับกันแทบทั้งสิ้น แต่ไม่เป็นไรใช้วิธีแรกได้เลยครับ

- สแกน QR code
ใช้สมาร์ทโฟนของเราสแกน QR code จากนั้นจะปรากฎหมายเลข 6 หลัก แล้วนำไปกรอกในช่องที่กำหนดไว้ แล้วเลือก “Continue”

- Recover codes
จะปรากฏ “Recovery codes” ซึ่งให้เราทำการดาวน์โหลดเจ้าตัวนี้เก็บไว้ในที่ไหนสักแห่งที่ปลอดภัยในอุปกรณ์ของเราครับ เผื่อเวลาที่เราเข้าใช้งานหรือไม่สามารถ access ตัว GitHub ได้ ตัว recovery codes นี่แหละช่วยเราได้

เสร็จสิ้น

References:
[github.com] - Token authentication requirements for Git operations
[github.com] - Configuring two-factor authentication
