Một trong những vấn đề mà lập trình viên hay gặp phải là việc làm việc với nhiều khách hàng khác nhau, trên cùng GitLab hay GitHub, nhưng yêu cầu sử dụng thông tin Committer khác nhau.

Đây là một tình huống mình gặp phải và muốn chia sẻ cùng mọi người. Hai khách hàng cùng sử dụng hệ thống GitLab, và mỗi bên đều muốn mình sử dụng 1 tài khoản GitLab riêng.

  • GitLab Client 1 – kevin@client1.com
  • GitLab Client 2 – kevin@client2.com

1 SSH Key không thể cùng thêm vào 2 tài khoản GitLab hoặc cùng GitHub được.

Cách xử lý vấn đề nhiều SSH key như trên?

Tạo (Generate) các SSK key riêng cho mỗi tài khoản

Câu lệnh thì rất đơn giản. Mở Git Bash (trong Windows), hoặc mở Terminal trong trình duyệt ra, chuyển vào folder chứa SSH key.

ssh-keygen -t rsa -b 4096

Khi gõ dòng lệnh trên, sẽ hiện ra 1 số câu hỏi.

Bạn lưu ý cần đặt tên cho file khác nhau cho mỗi lần tạo key, ví dụ ở đây là “client1” và “client2”.

Kết quả của 2 lần gõ trên là có các file sau:

Folder chứa SSH key trên máy tính Windows và Mac OSX

Trên Macbook, mở Terminal, gõ dòng lệnh sau:

cd ~/.ssh/

Trên máy tính Windows

%USERPROFILE%\.ssh // Mở cmd ra gõ
# Hoặc vào bằng File Explorer
C:/Users/<username>/.ssh

Kết quả sau khi tạo key là bạn có các file sau

client1
client1.pub
client2
client2.pub

Cấu hình SSH config để sử dụng nhiều SSH key

Nếu bạn sử dụng Mac, file này có thể được tạo ở path:

~/.ssh/config

Còn nếu bạn dùng Windows:

Đây là một file batch, nên bạn có thể sửa bằng “vi editor” hoặc Notepad++.

Giờ chúng ta sẽ cần cấu hình như sau:

Host client1.gitlab.com
  HostName gitlab.com
  User git
  IdentityFile ~/.ssh/client1
  PreferredAuthentications publickey

Host client2.gitlab.com
  HostName gitlab.com
  User git
  IdentityFile ~/.ssh/client2
  PreferredAuthentications publickey

Hãy để ý tới mục “Host” khác nhau, và mục “HostName” giống nhau. Điều này tức là khi bạn clone source hoặc add remote thì sẽ như sau:

Client 1:

git remote add origin git@client1.gitlab.com:client1/shopify.git

Client 2:

git clone git@client2.gitlab.com:client2/wp.git

Vậy là bạn đã hoàn tất phần cài đặt để sử dụng các SSH key khác nhau trên các tài khoản có chung Git server (như GitLab, GitHub, BitBucket).

Author

Khôi là Founder của CODE TOT JSC., công ty chuyên cung cấp dịch vụ website đa tính năng dành cho doanh nghiệp.

Write A Comment