ค้นหาเว็บไซต์

วิธีแก้ไข Git จะขอข้อมูลรับรองผู้ใช้สำหรับการตรวจสอบสิทธิ์ HTTP (S) เสมอ


หากต้องการเข้าถึงหรือทำงานกับพื้นที่เก็บข้อมูล Git ระยะไกล คุณสามารถใช้โปรโตคอล SSH หรือ HTTP(S) สำหรับแบบแรก เมื่อพูดถึงพื้นที่เก็บข้อมูลส่วนตัว คุณสามารถกำหนดค่าคีย์ SSH โดยไม่ต้องใช้ข้อความรหัสผ่าน ซึ่งช่วยให้คุณถ่ายโอนข้อมูลได้อย่างปลอดภัยโดยไม่ต้องพิมพ์ชื่อผู้ใช้และรหัสผ่านของคุณ

อย่างไรก็ตาม ด้วย HTTP(S) ทุกการเชื่อมต่อจะแจ้งให้คุณป้อนชื่อผู้ใช้และรหัสผ่าน (เมื่อ Git ต้องการการตรวจสอบสิทธิ์สำหรับบริบท URL เฉพาะ) ผู้ใช้ Github รู้เรื่องนี้ดี

ในบทความนี้ เราจะแสดงวิธีแก้ไข Git ที่ขอข้อมูลรับรองผู้ใช้สำหรับการเข้าถึงผ่าน HTTP(S) เสมอ เราจะอธิบายวิธีต่างๆ ในการป้องกันไม่ให้ Git แจ้งชื่อผู้ใช้และรหัสผ่านซ้ำๆ เมื่อโต้ตอบกับพื้นที่เก็บข้อมูลระยะไกลผ่าน HTTP(S)

วิธีการติดตั้ง Git ใน Linux

หากคุณไม่มีแพ็คเกจ Git ติดตั้งอยู่บนระบบของคุณ ให้เรียกใช้คำสั่งที่เหมาะสมสำหรับการแจกจ่าย Linux ของคุณเพื่อติดตั้ง (ใช้คำสั่ง Sudo หากจำเป็น)

sudo apt install git      [On Debian/Ubuntu]
yum install git           [On CentOS/RHEL/Fedora]
sudo zypper install git   [On OpenSuse]
sudo pacman -S git        [On Arch Linux]

การป้อนชื่อผู้ใช้และรหัสผ่าน Git ใน URL ระยะไกล

ตามที่เราได้กล่าวไว้ก่อนหน้านี้ เมื่อทำการโคลนพื้นที่เก็บข้อมูล Git ระยะไกลผ่าน HTTP(S) ทุกการเชื่อมต่อจะต้องมี ชื่อผู้ใช้ และ รหัสผ่าน ตามที่แสดง

เพื่อป้องกันไม่ให้ Git ถาม ชื่อผู้ใช้ และ รหัสผ่าน คุณสามารถป้อนข้อมูลรับรองการเข้าสู่ระบบใน URL ดังที่แสดง


sudo git clone https://username:[email /username/repo_name.git
OR
sudo git clone https://username:[email /username/repo_name.git local_folder

ข้อเสียเปรียบหลักของวิธีนี้คือ ชื่อผู้ใช้ และ รหัสผ่าน ของคุณจะถูกบันทึกไว้ในคำสั่งในไฟล์ประวัติเชลล์

รวมถึงในไฟล์ .git/config ใต้โฟลเดอร์ในเครื่องซึ่งมีความเสี่ยงด้านความปลอดภัย

cat .git/config

หมายเหตุ: สำหรับผู้ใช้ Github ที่เปิดใช้งานการตรวจสอบสิทธิ์แบบสองปัจจัย หรือกำลังเข้าถึงองค์กรที่ใช้การลงชื่อเพียงครั้งเดียว SAML คุณต้อง สร้างและใช้โทเค็นการเข้าถึงส่วนบุคคลแทนการป้อนรหัสผ่านของคุณสำหรับ HTTPS Git (ดังที่แสดงในผลลัพธ์ตัวอย่างในคู่มือนี้) หากต้องการสร้างโทเค็นการเข้าถึงส่วนบุคคล ใน Github ให้ไปที่ การตั้งค่า => การตั้งค่านักพัฒนาซอฟต์แวร์ => โทเค็นการเข้าถึงส่วนบุคคล

บันทึกชื่อผู้ใช้และรหัสผ่านที่เก็บ Git ระยะไกลบนดิสก์

วิธีที่สองคือใช้ตัวช่วยข้อมูลรับรอง Git เพื่อบันทึกชื่อผู้ใช้และรหัสผ่านของคุณในไฟล์ธรรมดาบนดิสก์ดังที่แสดง

git config credential.helper store				
OR
git config --global credential.helper store		

จากนี้ไป Git จะเขียนข้อมูลรับรองลงในไฟล์ ~/.git-credentials สำหรับแต่ละบริบทของ URL เมื่อเข้าถึงเป็นครั้งแรก หากต้องการดูเนื้อหาของไฟล์นี้ คุณสามารถใช้คำสั่ง cat ดังภาพ

cat  ~/.git-credentials

สำหรับคำสั่งที่ตามมาสำหรับบริบท URL เดียวกัน Git จะอ่านข้อมูลรับรองผู้ใช้ของคุณจากไฟล์ด้านบน

เช่นเดียวกับวิธีการก่อนหน้านี้ วิธีการส่งข้อมูลรับรองผู้ใช้ไปยัง Git ก็ไม่ปลอดภัยเช่นกัน เนื่องจากไฟล์จัดเก็บข้อมูลไม่ได้เข้ารหัสและได้รับการป้องกันโดยสิทธิ์ระบบไฟล์มาตรฐานเท่านั้น

วิธีที่สามที่อธิบายไว้ด้านล่างนี้ถือว่าปลอดภัยกว่า

การแคชชื่อผู้ใช้และรหัสผ่านที่เก็บ Git ระยะไกลในหน่วยความจำ

สุดท้ายแต่ไม่ท้ายสุด คุณยังสามารถใช้ตัวช่วยข้อมูลรับรอง Git เพื่อบันทึกข้อมูลประจำตัวของคุณไว้ในหน่วยความจำชั่วคราวได้ระยะหนึ่ง เมื่อต้องการทำเช่นนั้น ให้ออกคำสั่งต่อไปนี้

git config credential.helper cache
OR
git config --global credential.helper cache

หลังจากรันคำสั่งข้างต้น เมื่อคุณพยายามเข้าถึงพื้นที่เก็บข้อมูลส่วนตัวระยะไกลเป็นครั้งแรก Git จะขอชื่อผู้ใช้และรหัสผ่านของคุณและบันทึกไว้ในหน่วยความจำเป็นระยะเวลาหนึ่ง

เวลาแคชเริ่มต้นคือ 900 วินาที (หรือ 15 นาที) หลังจากนั้น Git จะแจ้งให้คุณป้อนชื่อผู้ใช้และรหัสผ่านอีกครั้ง คุณสามารถเปลี่ยนได้ดังนี้ (1800 วินาที=30 นาที หรือ 3600 วินาที=1 ชั่วโมง)

git config --global credential.helper 'cache --timeout=18000'
OR
git config --global credential.helper 'cache --timeout=36000'

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Git และตัวช่วยข้อมูลประจำตัว โปรดดูที่หน้าคู่มือ

man git
man git-credential-cache
man git-credential-store

คู่มือนี้มีประโยชน์หรือไม่? แจ้งให้เราทราบผ่านแบบฟอร์มข้อเสนอแนะด้านล่าง คุณสามารถแบ่งปันคำถามหรือความคิดเกี่ยวกับหัวข้อนี้ได้เช่นกัน