[SSH] การใช้ multiple ssh-keys สำหรับ Bitbucket, GitHub, Gitlab บน Mac/Linux

Suraneti Rodsuwan
2 min readMay 4, 2020

--

Photo by Scott Webb on Unsplash

Prologue

ssh-key คือ วิธีรับรองสิทธิ (authentication method) ในการเข้าถึง การเชื่อมต่อแบบเข้ารหัส ระหว่างระบบ (เช่น คอมพิวเตอร์เรา กับ Bitbucket server)

จะคล้ายๆ กับการ Sign in with Google บน Medium.com ที่เราไม่ต้องกรอก username, password แต่จะใช้การ authentication อัตโนมัติผ่าน Google account ของเราแทน (ในกรณีที่ Google account เราให้ permission กับ Medium.com แล้ว)

เคยสงสัยมั้ย ว่าถ้าเกิด เรามีหลาย account (company และ personal) บน Bitbucket, GitHub หรือ Gitlab และเราต้องการใช้ ssh protocol กับ project ของสอง account บน คอมพิวเตอร์ เราจะ config ssh ยังไง?

ผมเป็นหนึ่งคนที่ประสบปัญหานี้ เพราะบน Bitbucket เราไม่สามารถใช้ ssh-key เดียวกัน ในสอง account ได้ จึงต้องสลับ rsa_id ไปมาๆ เวลาจะ push code (ไม่งั้นก็ต้องใช้ https protocol แทน ซึ่งผมอยากใช้ ssh เพราะเท่กว่า)

ผมจึงเริ่มค้นหาคำตอบ และพบว่า จริงๆแล้ว เราสามารถ config multiple ssh-keys ให้กับ ssh ได้!! (แต่ไม่เห็นว่ามีบทความเวอร์ชั่นภาษาไทยเลย จึงเกิดบทความนี่ขึ้นมา 555)

เพื่อไม่เสียเวลา เริ่ม config กันเลย! (พร้อมจะลุยกันมานานแล้ว ฮะฮ่าโย่ว !!!)

อ่านวงเล็บ แล้วทำให้นึกถึงสมัย Counter Strike 1.6 เสียงไทย เลยทีเดียว…

[ข้อมูล] ผมทำการ mock up ข้อมูล fingerprint และ RSA ทั้งหมดในตัวอย่างนี้

เราจะเริ่มกันที่ generate ssh-key สำหรับ personal account

Generate ssh-key for personal account

เสร็จแล้ว ต่อกันที่ generate ssh-key สำหรับ company account

Generate ssh-key for a company account

เสร็จแล้วก็มาทำการสร้างไฟล์และเขียน config

มีเรื่องเล่าอันเก่าแก่ ที่ถูกเล่าต่อรุ่นสู่รุ่น ว่ามี developer จำนวนหนึ่ง ได้ลองเข้าไปในโลกคู่ขนานของ editor ซึ่งถูกเรียกว่า vim แล้วไม่สามารถออกมาได้อีกเลย…

But don’t worry bro, ผมเตรียมใบวาร์ปให้สำหรับทุกคนแล้ว.

Create an ssh config file

เสร็จแล้ว อย่าลืมนำ ssh-key (RSA public key 2 ตัวที่เรา generate คือ id_rsa.pub และ id_rsa_company.pub) ไป setup บน Bitbucket หรือ GitHub, Gitlab ด้วยนะครับ

วิธีใช้งาน

Clone repository with personal and company ssh-key

เท่านี้ก็เป็นอันเสร็จสิ้น ดังนั้นเราสามารถที่จะ config ssh-key สำหรับกี่ account ก็ได้ตามต้องการ

--

--