มาต่อจาก Part 1 กันที่ผมทิ้งท้ายไว้ว่าถ้าเราจะใช้ SSH config โดยที่เรามีหลาย key หลาย account เราต้องทำยังไงรวมถึงวิธีการ clone ด้วย Git SSH
การ Clone git ด้วย SSH
ถ้าเราจะ clone git ด้วย SSH เราก็สามาถ ใช้ command ด้านล่างนี้
git clone git@host:username/repository.git
Example
[email protected]:jumpbox-academy/cloud-camp-audition.git
- host หมายถึงชื่อ VCS(Version Control System) provider เช่น github.com (ถ้าเราไม่ทำการตั้งค่าอะไรใน ~.ssh/config อันนี้จะเป็น ชื่อ default)
- username แสดงถึงบัญชีผู้ใช้ของคุณ เช่น jumpbox-academy
- repository แสดงถึงชื่อของที่เก็บ Git ที่คุณต้องการโคลน เช่น cloud-camp-audition
แต่อย่างที่ผมกล่าวไปข้างต้น ถ้าเราอยากใช้ SSH key หลายๆ key คนละ account หรือว่าคนละ provider ต้องทำยังไงหล่ะ
SSH Config คืออะไรร
สมมติ อยากใช้ SSH หลายๆ Key เช่น Github / Gitlab / Bicbucket และ Hosting แยกกันไปเลย ก็ทำได้ โดยใช้กำหนดที่ ~/.ssh/config
(ถ้าไม่มีไฟล์นี้ ก็สร้างขึ้นมาเลยครับ)
เช่น ผมมี 2 account ใช้ github ผมก็จะแยกแบบนี้โดย
– Host เราสมารถตั้งชื่ออะไรก็ได้ตามที่เราต้องการ host ตรงนี้จะไป mapping กับการ clone ด้านบนเช่นกันว่าเราจะใช้ host ไหนในการ clone repo นี้
– Hostname คือชื่อของ vcs provider
– User ชื่อผู้ใช้ของ account นั้นๆที่เราทำการผูก SSH key
– IdentityFile คือไฟล์ private key ที่เรานำ pub key ไปไว้บน provider
Host github.com
Hostname github.com
User creampxxz
IdentityFile ~/.ssh/id_ed25519
Host github.com-work
Hostname github.com
User phylynlyn
IdentityFile ~/.ssh/id_ed25519_2
อันนี้ข้อดีคือ ช่วยให้เราสามารถ SSH เพื่อ ใช้ github คนละ account ได้ เช่นสมมติ url เราเป็นแบบนี้
[email protected]/jumpbox/myrepo
แต่ถ้าเราอยากให้ SSH มันไปเรียก ~/.ssh/id_ed25519_2 เราก็แค่เปลี่ยน git remote url
git remote set-url origin [email protected]/jumpbox/myrepo
git clone [email protected]/jumpbox/myrepo <-- ใช้ Key แรก
git clone [email protected]/jumpbox/myrepo <-- ใช้ Key อันที่ 2
เพียงเท่านี้เราก็จะสามารถ ใช้ SSH key ได้โดย รู้ทั้งวีธีการ clone แบบไม่ Set config และ Set config ในกรณีที่เรามีหลาย account และหลาย provider