Frankiie's Corner

Hướng dẫn setup SSL config để làm việc cùng lúc với nhiều tải khoản Github

27 Feb 2023

Hướng dẫn setup SSL config để làm việc cùng lúc với nhiều tải khoản Github

Nếu làm việc với Github một thời gian, chúng ta có thể để ý rằng GitHub cung cấp hai cách kết nối với remote git repository, cách thứ nhất đó là thông qua SSH, và cách thứ hai là HTTPS. Trong đó, HTTPS yêu cầu bạn cung cấp mã thông báo truy cập mỗi khi bạn đẩy vào kho lưu trữ. SSH cho phép bạn đẩy mã mà không cần nhớ tên người dùng và mã thông báo của bạn mỗi khi bạn đẩy mã vào kho lưu trữ GitHub.

Thông thường, mỗi chúng ta sẽ có cho mình một tài khoản Github để có thể phục vụ công việc hằng ngày. Tuy nhiên vào một ngày nọ, chúng ta nhận được một công việc mới (cty, partime, etc), và giờ ta phải cần thêm một tài khoảng Github riêng nữa để phục vụ cho công việc đó, tất nhiên trên cùng một máy 🙂. Làm thế nào để ta có thể cài đặt cho máy hỗ trợ hai tài khoản mà khi dùng không bị trùng lặp đây? Trong bài viết này, mình sẽ chỉ cho bạn cách cài đặt để có thể sử dụng hai tài khoản Github riêng biệt trên cùng một máy tính nha.

Getting Started

Create a New SSH Key

Trước tiên, chúng ta cần phải tạo SSH key cho tài khoản Github thứ hai mà ta muốn dùng. Ở vị trí terminal hiện tại, chúng ta chuyển hướng tới .ssh folder và tạo key thông qua câu lệnh sau đây.

$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "email-mà-bạn-đăng-kí-cho-tài-khoản-github"

Sau khi câu lệnh trên được thực thi thành công, sẽ có một cái prompt xuất hiện để bạn đặt tên file chứa SSH key.

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/cudayanh/.ssh/id_rsa): id_rsa_forwork

Bạn có thể điền tên file vào chỗ trống trên và ấn enter, mình điền là id_rsa_forwork.

Tiếp đến sẽ là hai cái prompt yêu cầu điền passphrase cho file vừa khởi tạo, mục này không bắt buộc nên các bạn có thể để trống và ấn enter hai lần là xong.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Oki, sau khi nhập passphrase xong, SSH key sẽ được lưu ở hai file riêng biệt, identification tức private key sẽ được lưu ở id_rsa_forwork còn public key thì lưu ở id_rsa_forwork.pub như kết quả ở dưới đây.

Your identification has been saved in id_rsa_forwork
Your public key has been saved in id_rsa_for.pub
The key fingerprint is:
SHA256:1asgVJYdT+QMU3izczOA109WlwSpynb7sq2ntejX7Go newstufflover@gmail.com
The key's randomart image is:
+---[RSA 4096]----+
|        oo+*+o+.=|
|       o. +O=...+|
|      .   .o*+ + |
|     .   . .o.+ .|
|      . S . .o o |
|       . = o     |
|        . o ..o  |
|           o+E.o |
|          .*X=o. |
+----[SHA256]-----+

Giờ cái chúng ta cần copy cái public key lưu ở fileid_rsa_forwork.pub để có thể kết nối với tài khoản Github. Thực thi câu lệnh sau chúng ta có thể thấy được nội dung (public key) trong file.

$ cat id_rsa_forwork.pub

Copy nó rồi lưu tạm vào đâu trên máy nhé.

Attach the New Key

Oki, chúng ta cần truy cập vào github và đăng nhập tài khoản, tiếp đó ta click vào mục Settings.

setting profile

Rồi click tiếp vào mục SSH and GPG keys.

SSH and GPG keys

Sau đó, click vào cái nút New SSH key để điền thông tin key.

generate new key

ở phần Title chúng ta có thể điền tùy ý cũng oke nha. Còn ở phần Key thì paste cái public key mà chúng ta lưu trước đó ở mục trên vào là xong.

add new key

Add the SSH Key to the Agent

Chúng ta đã tạo SSH key (public và private) tiếp đó là đã thêm nó vào tài khoản Github mà chúng ta muốn dùng đúng không nào. Tuy nhiên như thế vẫn chưa xong, để SSH có thể nhận diện ra được là SSH key (được lưu ở id_rsa_forwork) và tài khoản Github đã được kết nối với nhau thông qua một cái file (id_rsa_forwork.pub) cụ thể nào đó. Ta cần phải cho SSH biết điều đó bằng cách thêm nó vào danh sách identity của SSH.

$ ssh-add ~/.ssh/id_rsa_forwork

Lưu ý: Nếu sau khi thực thi câu lệnh trên mà bị lỗi sau đây, thì có thể là ssh-agent của bạn chưa được kích hoạt.

Could not open a connection to your authentication agent

Để kích hoạt ssh-agent, ta chỉ cần thực thi câu lệnh sau đây.

$ eval `ssh-agent -s`

Và thực hiện lại câu lệnh thêm vào identity.

$ ssh-add ~/.ssh/id_rsa_forwork

Nếu không có vấn đề gì xảy ra thì ta sẽ nhận được kết quả thông báo identity đã được thêm thành công như dưới đây nha.

Identity added: id_rsa_forwork (newstufflover@gmail.com)

Create a Config File

Sắpp xonggg rồiiii. Giờ ta đang có hai tài khoản Github, một cái đang dùng, giờ ta muốn thêm một tài khoản khác để dùng song song mà không bị trùng lặp nhau, điều đó cũng có nghĩa là ta phải tạo riêng Github config cho mỗi tài khoản đúng không nào. Oki, giờ ta vào file SSH config bằng câu lệnh sau.


$ vim ~/.ssh/config

Sau khi mở file ~/.ssh/config, chúng ta có thể sẽ thấy một vài cái config cho tài khoản github. (tùy từng người có thể sẽ không giống nhau nha)


# giả sử cái này là config cho tài khoản github trước đó

Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_forpersonal

# thì cái này sẽ là config cho tài khoản bây giờ

Host github.com-forwork # để ý dòng này nha
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_forwork # dòng nàyyy nữa nha

Để có thể dễ dàng phân biệt đâu là config của tài khoản trước đó, và đâu là config của tài khoản bây giờ, ta sẽ thay đổi cái Host của tài khoản bây giờ thành github.com-forwork nha.

Xong việc rồi thì lưu và thoát ra nào. Đối với những bạn nào chưa dùng vim bao giờ thì có thể ấn phím lần lượt theo dưới đây nha.

  • ấn esc rồi tiếp đó ấn : rồi ấn wq.

Try It Out!

Giờ chính thức xong rồi này. Xong thì xong nhưng cũng phải test cái xem có chạy được hay không chứ nhỉ 😊.

Ta cần tạo một cái directory để chứa project.


$ cd ~/
$ mkdir test-repo
$ cd test-repo
$ touch README.md

Giờ ta vào Github để tạo một cái remote project (nhớ là đăng nhập bằng tài khoản chúng ta vừa dùng để config nha)

init repo

Ta khởi tạo local repository cho project.


$ git init
$ git add .
$ git commit -m "initial commit"

Chỗ này khoan một chút nha. Còn nhớ cái Host trên ~/.ssh/config mà chúng ta vừa config cho tài khoản Github hiện giờ chứ? Đúng nó rồi đấy. Lúc push project lên remote, ta sẽ sử dụng Host là github.com-forwork chứ không còn là github.com như trước nữa (vì nó đã thuộc về tài khoản trước đó roài)


$ git remote add origin git@github.com-forwork:codeforfut17/test-add-mutiple-github-account.git
$ git push origin main

Pangggggg….. Done nha!


Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Writing objects: 100% (4/4), 263 bytes | 263.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com-forwork:codeforfut17/test-add-mutiple-github-account.git

- [new branch] main -> main

Giờ thì lên tài khoản Github vừa rồi ấn F5 và kiểm tra thôi 😊.

Conclusion

Thông qua bài viết này, chúng ta đã cùng nhau tạo một config riêng cho tài khoản Github phụ để có thể làm việc riêng lẻ mà không bị trùng lặp với tài khoản đang dùng trên cùng một máy. Bài có hơi dài nhưng nếu bạn đọc đến đoạn kết thì mình cảm ơn nha 😊.

Mình viết blog để tổng hợp lại những gì mình đã học, và cũng như học cách trình bày sao cho người khác có thể hiểu được, nên bài viết có thể tồn tại bug hoặc chưa hoàn thiện đâu đó. Nếu có gì liên quan đến bài viết, cần giúp debug, etc. thì đừng ngần ngại mà hãy cứ nhắn tin cho mình qua Facebook nha.