wiennat

เซต ssh ให้ใช้ Github ได้หลายแอคเคาท์

ปกติแล้ว Github แนะนำให้ใช้แอคเคาท์เดียวสำหรับทั้งเรื่องงานและเรื่องส่วนตัว แต่สำหรับบางกรณีที่ต้องใช้มากกว่า 1 แอคเคาท์ เช่นมีการใช้ dotfiles ร่วมกัน หรือใช้ Github สำหรับจดบันทึกส่วนตัว (เช่นใช้ Obsidian) ถ้าเป็นเมื่อก่อนอาจจะยอมใช้ HTTP Protocol แล้วใส่พาสเวิร์ดเอาแทนได้ แต่พอ Github เลิกรองรับการใช้งานพาสเวิร์ดก็เลยต้องมาออกแรงมากขึ้นหน่อยด้วยการเซต SSH config เพิ่ม

สมมติว่าเรามีแอคเคาท์ชื่อ my-personal-account กับ my-work-account

  1. ให้สร้าง ssh public/private key pairs ของทั้งสอง เซฟในชื่อที่ต่างกัน เช่น my-personal-account กับ my-personal-account.pub และ my-work-account กับ my-work-account.pub

  2. เลือกว่าจะให้แอคเคาท์ไหนจะให้เป็นแอคเคาท์หลัก กรณีนี้สมมติว่าให้ my-personal-account เป็นแอคเคาท์หลัก

  3. ในไฟล์​ ~/.ssh/config ให้กำหนดค่าแบบนี้

    Host github.com
        HostName github.com
        User git
        AddKeysToAgent yes
        UseKeychain yes
        IdentityFile ~/.ssh/my-personal-account
    
    Host github.com-work
        HostName github.com
        User git
        AddKeysToAgent yes
        UseKeychain yes
        IdentityFile ~/.ssh/my-work-account
    
  4. สำหรับแอคเคาท์หลักก็ใช้คำสั่งตามปกติ แต่เวลาเราจะใช้งาน repo ที่เป็นของแอคเคาท์ทำงานก็ใช้วิธี git clone ด้วยการเติม -work เข้าไปท้าย github.com แบบคำสั่งข้างล่างนี้แทน โดยที่ตรง (your repo) นี่ก็ใส่เป็นชื่อ repo ที่ต้องการ

    git clone [email protected]:(your repo)
    

    เช่น

    git clone [email protected]:my-work-accont/myrepo.git
    
  5. คำสั่งอื่นๆ ก็ใช้งานตามปกติ

ข้อควรระวัง

ถึงแม้ว่าเราจะโคลนตัว repo มาได้แต่ว่าเวลาเรา commit code มันอาจจะเป็นชื่อและอีเมลที่เราใช้กับแอคเคาท์อื่นก็ได้ ดังนั้นคนที่กลัวว่าชื่อ/อีเมลจะปนกันก็ควรจะ ต้องตรวจสอบ .git/config ทุกครั้งหลังจาก clone ว่าตั้งค่า git.user และ git.email ถูกต้อง