ตั้งค่าหลาย SSH keys ในคอมเครื่องเดียว
ในปัจจุบันผมมีความจำเป็นต้องใช้งาน Git repo หลายที่มาก เช่น github หรือ gitlab หรือ gitlab private server และการเข้าถึง git repo ให้ปลอดภัยเราจำเป็นต้องใช้ ssh key เข้ามาช่วย ใครยังใช้งานผ่าน user password ปกติเลิกได้เลย
และในแต่ละ git repo ก็มี ssh key ที่ไม่เหมือนกันอีก ผมเลยมีความจำเป็นต้องตั้งค่าให้เครื่องตัวเองสามารถใช้งาน ssh key ได้หลายอันพร้อมกัน ตอน git clone หรือ git push จะได้สะดวก
โดยในตัวอย่างผมจะกำหนดแบบนี้ personal = Github
และ work = Gitlab
1. ไปยัง ssh folder
$ cd ~/.ssh
2. สร้าง ssh key ขึ้นมา
$ ssh-keygen -t rsa -C "name@personal_email.com"
$ ssh-keygen -t rsa -C "name@work_email.com"
พอขั้นตอนที่ถามว่า Enter file in which to save the key
เราก็กำหนดชื่อไฟล์ไปตามต้องการ เราก็จะได้มา อย่างละ 4 ไฟล์ เช่น
# .ssh/
.
├── personal_email
├── personal_email.pub
├── work_email
└── work_email.pub
3. สร้าง config ไฟล์
ไฟล์ config จะเป็นตัวกำหนดว่า เวลาเราเรียกใช้ git command ไปที่ repo ไหน ให้ไปเรียกไฟล์ ssh key ไฟล์ไหน โดยทำการสร้างไฟล์ชื่อ config
ไว้ใน .ssh
ก็จะเป็น
# .ssh/
.
├── config
├── personal_email
├── personal_email.pub
├── work_email
└── work_email.pub
ในไฟล์ config
กำหนดดังนี้
Host gitlab gitlab.com
HostName gitlab.com
IdentityFile ~/.ssh/work_email # private key
User snappytux
IdentitiesOnly yes
Host github github.com
HostName github.com
IdentityFile ~/.ssh/personal_email # private key
User snappytux
IdentitiesOnly yes
4. นำ .pub ไปใส่ไว้ใน account เราบน git repo
ลองใช้คำสั่ง cat work_email.pub
เราจะได้ข้อมูลประมาณนี้
ssh-rsa AAAAB3NzaC1yc2xxxxx name@work_email.com
ก็นำค่าของ work_email.pub
และ personal_email.pub
ไปใส่ใน github และ gitlab ได้เลย
5. ทดสอบ git clone
ลองไป clone มาจาก gitlab ด้วย ssh ซึ่งจะเป็นประมาณนี้
$ git clone git@gitlab.com:twinsyn/foobar/foobar-api.git
หรือ github
$ git clone git@github.com:snappytux/foobar.git
เราก็จะสามารถใช้งานได้แล้ว
Comments ()