Cách sử dụng nhiều tài khoản GitHub trên một thiết bị bằng SSH Key

Nhu cầu quản lý nhiều tài khoản GitHub trên cùng một thiết bị là điều mà bất kì developer nào cũng sẽ cần. Ai cũng có những account Github khác nhau, phục vụ cho những mục đích khác nhau. Ví dụ như một account mail công ty và một account cho mail cá nhân. Dưới đây là kinh nghiệm mà mình đã sử dụng để chuyển đổi giữa 2 account Github của mình. Các bước cấu hình sẽ lần lượt là:

Tạo SSH key

ls -al ~/.ssh

Đầu tiên, chúng ta có thể kiểm tra xem liệu chúng ta có bất kỳ SSH key nào hiện có hay không.

Nếu đã có, ta có thể dùng các key đó, còn nếu chưa có key nào cả thì có thể tạo bằng lệnh dưới.

ssh-keygen -t rsa -C "[email protected]" -f "ssh_file_name"

Ví dụ:

ssh-keygen -t rsa -C "[email protected]" -f "id_rsa_work"

Đoạn mã trên sẽ tạo các SSH key và lưu public key có tag [email protected] vào ~/.ssh/id_rsa_work.pub.

Khi được yêu cầu vị trí lưu SSH key, hãy chấp nhận vị trí mặc định bằng cách nhấn enter. Key private và key public ~/.ssh/id_rsa_work.pub sẽ được tạo tại vị trí ssh mặc định ~/.ssh/. Chúng ta đã tạo được ssh key cho account phục vụ công việc, tương tự cho email phục vụ mục đích cá nhân. Tôi đặt tên cho ssh key cá nhân là id_rsa_personal. Sau khi tạo xong chúng ta sẽ có 2 key dưới:

~/.ssh/id_rsa_personal
~/.ssh/id_rsa_work

Thêm SSH key mới vào tài khoản GitHub tương ứng

Chúng ta đã có SSH public key và chúng ta sẽ thêm chúng tài khoản GitHub của mình.

Sao chép public key pbcopy < ~/.ssh/id_rsa_personal.pub rồi đăng nhập vào tài khoản GitHub cá nhân của bạn:

  • Đi tới Setting
  • Chọn SSH Key and GPG từ menu bên trái.
  • Nhấp vào New SSH Key, cung cấp tiêu đề phù hợp và dán nội dung của SSH key vào editor bên dưới
  • Nhấp vào Add KeyDone!

Đối với tài khoản công việc, hãy sử dụng public key tương ứng (pbcopy < ~/.ssh/id_rsa_work.pub) và lặp lại các bước trên trong tài khoản công việc GitHub của bạn.

Đăng ký SSH Key với SSH Agent

Để sử dụng các key, phải đăng ký chúng với ssh agent trên máy của mình. Đảm bảo ssh-agent đang chạy bằng lệnh eval "$(ssh-agent -s)".

Thêm private key vào ssh-agent như sau:

ssh-add ~/.ssh/id_rsa_personal
ssh-add ~/.ssh/id_rsa_work

Sau đó, làm cho ssh-agent sử dụng các SSH Keys tương ứng cho các SSH Hosts khác nhau bằng cách sử dụng file config cấu hình cho SSH.

Tạo tệp cấu hình SSH

Tệp cấu hình SSH sẽ có tại ~/.ssh/config. Chỉnh sửa nó nếu nó tồn tại, nếu không chúng ta có thể tạo nó.

cd ~/.ssh/
touch config           // Creates the file if not exists
nano config            // edit file

Tạo các mục cấu hình cho các tài khoản GitHub có liên quan tương tự như mục bên dưới trong tệp ~/.ssh/config của bạn:

# Personal account
Host github.com
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_personal
   
# Work account
Host github.com-work
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_work

work là id người dùng GitHub cho tài khoản công việc.

github.com-work là ký hiệu được sử dụng để phân biệt nhiều tài khoản Git. Đảm bảo bạn nhất quán với ký hiệu tên máy chủ mà bạn sử dụng. Điều này có liên quan khi ta clone một repository hoặc set the remote origin cho repository ở local

Cấu hình trên yêu cầu ssh-agent:

Sử dụng key id_rsa_personal cho bất kỳ URL Git nào sử dụng @github.com

Sử dụng key id_rsa_work cho bất kỳ URL Git nào sử dụng @github.com-work

Như vậy là ta đã hoàn thành xong việc config để sử dụng 2 tài khoản Github. Thử clone một repository hoặc làm việc với một repo ở local nhé.

Clone Repository

Khi các cấu hình đã ổn, chúng ta có thể tiếp tục và clone các repository tương ứng. Khi clone, ta chỉ cần sử dụng các Host là github.com cho account personal và github.com-work cho account work. Ví dụ như dưới.

Với account cho công việc:

git clone [email protected]:TOMOSIA-VIETNAM/tomogpt.git

Và account cá nhân:

git clone [email protected]:BaoVanPhu/django-learning.git

Thay đổi này được thực hiện tùy thuộc vào Host được xác định trong tệp config SSH. Giữa @ và : phải khớp với những gì ta đã cung cấp trong tệp config SSH.

Local Repository

Với repository đã được cloned trước đó:

Ta chỉ cần update lại remote-url như lệnh dưới

Với account công việc:

git remote set-url origin [email protected]:yamatabitabi/ytb-ec-site.git

Tương tự cho account cá nhân 😀

Nếu tạo một repository mới ở local:

Khởi tạo Git trong thư mục dự án git init.

Tạo một repo mới trong tài khoản GitHub rồi add Git remote vào repo ở local

git remote add origin [email protected]:TOMOSIA-VIETNAM/new_repo.git 

Sau đó add file và commit rồi push code lên thôi.

Account cá nhân thì như bình thường rồi, không có gì phải bàn =))

Done!

Conclusion

Đây là những kinh nghiệm mình đã được đọc và config ở laptop của mình. Hi vọng sẽ có ích cho mọi người.

Cảm ơn mọi người đã dành thời gian để đọc. 😀

Nguồn: Freecodecamp

0 Shares:
2 comments
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like