Header Ads Widget

Ticker

6/recent/ticker-posts

Sử dụng nhiều tài khoản Git trong cùng một máy với SSH Key

Keywords: How to use multi account Git on a machine with ssh-key

Chắc hẳng nhiều bạn Dev đã từng làm việc freelancer hoặc 2 - 3 jobs cùng 1 lúc để có thêm thu nhập cho bản thân mình rồi đúng không nào, vậy những lúc như thế việc các bạn sử dụng nhiều tài khoản Git là điều xảy ra rất nhiều, vì mõi công ty họ sẻ có 1 Repo Git riêng, nên khi mình làm việc cho công ty A sẻ sử dụng Repo Git của công ty A và khi làm cho công ty B thì sẻ sử dụng Repo Git của công ty B, khi gặp vấn đề này, các bạn cần làm chính là tạo multi config để có thể thuận tiện cho việc push và pull code của cả A và B, vì thế hôm nay mình sẻ hướng dẫn cho các bạn cách để có thể config multi account Git.

Để làm được điều này thì trước tiên các bạn cần phải tạo file rsa để ssh trước đã, ta chạy lệnh sau
ssh-keygen
Nó sẻ được như hình, vì mình thì muốn tạo nhanh để demo nên cứ enter hết cho lẹ, còn ai chăm chuốt cho cái key thì cứ xem hướng dẫn tạo ssh key trên mạng nhé, như là có Password hay gì đó chẳn hạn
Sau khi các bạn tạo xong thì trong path: $HOME/.ssh
Các bạn sẻ tìm thấy 2 file đó là id_rsa và id_rsa.pub ở đây 1 cái là key private và 1 cái là public
Đến đây thì các bạn thực hiện lệnh cat file id_rsa.pub ra để lấy thông tin bên trong file đó gắn vào ssh trong profile của tài khoản Git của các bạn nhé.
cat id_rsa.pub
Ví dụ ở đây mình add đến tài khoản Github của công ty mình là Pharmacity
Truy cập đến phần "Settings", sau đó truy cập đến phần "SSH and GPG keys"
Tại đây bạn copy key trong file id_rsa.pub và add vào tài khoản đó
Với mõi account Git mình đã thực hiện add như vậy cho cả account cá nhân và account cho các công ty khác nữa, bây giờ sau khi đã add ssh key thành công rồi thì việc chúng ta làm bây giờ là tạo file config và các folder chứa đựng file SSH-Key riêng lẻ, vì trường hợp này mình đang sử dụng các SSH-Key riêng biệt, không giống nhau, nên mình sẻ phân ra thành nhiều folder cho từng SSH-Key cũng như tiện quản lý, còn ở trên mình chỉ hướng dẫn các bạn tạo 1 SSH-Key cho tất cả account Git nên các bạn không cần chia giống mình cũng được
Quang trọng là nằm ở file config bạn trỏ nó đến file id_rsa là được, trong folder github của mình có chứa gì, nó sẻ chứa 2 file id_rsa và id_rsa.pub
# Account github Pharmacity: default
Host github.com
   HostName github.com
   User git
   IdentityFile ~/.ssh/github-thanhphatit-pmc/id_rsa
   IdentitiesOnly yes
   
# Host gitlab personal
Host gitlab.com    
   HostName gitlab.com
   User git
   IdentityFile ~/.ssh/gitlab-thanhphatit/id_rsa

# Host github personal
Host github.com-thanhphatit
   HostName github.com
   User git
   IdentityFile ~/.ssh/github-thanhphatit/id_rsa
   IdentitiesOnly yes
Ở file config trên tôi đã chia ra 3 config ứng với 3 folder cho 3 account 1 cái là Gitlab và 2 cái còn lại là Github cá nhân và cho công ty, các bạn cần chú ý phần Host và IdentityFile vì đây là 2 phần quang trọng cần phải thay đổi, đặc biệt là phần Host nó không thể giống nhau, ok sau khi đã tạo config xong rồi, để khi clone code về mà nó hiểu mình đang sử dụng account nào các bạn cần chú ý ở bước clone này, chúng ta có mẫu để clone như sau
  • git clone git@host_in_config:personal_account_name/repo_name.git
Example:
git clone git@github.com-thanhphatit:thanhphatit/repo_name.git
git clone [email protected]:thanhphatit-pmc/repo_name.git
Như các bạn thấy ở phần host_in_config mình đã lấy cái giá trị host mà mình đã config ở trên file config, với tài khoản cá nhân mình là thanhphatit và tài khoản github của công ty của mình là thanhphatit-pmc, như vậy khi bạn clone repo nó đã hiểu được bạn sẻ lựa chọn ssh-key nào để sử dụng rồi đó, các vấn đề khác với git và tài khoản thì bạn cũng chú ý tương tự, ví dụ không phải git clone mà là git remote hay gì đó thì cũng làm tương tự ví dụ ở trên với host đúng với cái config và account của mình, như vậy mình đã hướng dẫn các bạn xong rồi đó, chúc các bạn thành công nhé !

Post a Comment

0 Comments