Cách sử dụng nhiều tài khoản Github trên Window với SSH key
Đây có lẽ là chủ đề mình viết sớm nhất từ những ngày đầu biết viết code nhưng đến tận hôm nay mới ngồi viết nó một cách chỉn chu nhất =)). Ngày ấy khi đi làm vì mục đích công việc nên mình phải thường xuyên chuyển đổi account cá nhân và công việc. Ban đầu, tần suất chuyển đổi không nhiều nên việc nhập username và password cho từng account mỗi khi cần thao tác với các repo không gây khó khăn gì. Tuy nhiên, khi tần suất tăng dần thì thao tác ấy lại trở nên mất thời gian. Mình cần cái gì đó tự động hơn và chỉ cần thiết lập một lần và github sẽ tự động xác thực và nhận diện account cho các repo tương ứng và thật may mình đã tìm được chiếc chìa khóa mang tên SSH key.
Chỉ cần gõ từ khóa "ssh key github" và ấn Enter thì sẽ thấy có vô vàn bài viết hướng dẫn về chủ đề này và hi vọng rằng sau phím Enter ấy, bài viết này có duyên được xuất hiện và giúp ích được cho các bạn ^^ . Nào, giờ chúng ta cùng bắt tay thực hiện nhé.
Checklist cần có:
- GitBash terminal
- Tài khoản github (Ở đây mình dùng 2 account
GitHubriêng để hướng dẫn nhé)
Các bước thực hiện:
Tạo SSH key
Ở bước này, chúng ta sẽ generate ra một cặp private key và public key trên máy tính cá nhân.
-
Mở
GitBashtại folder mà bạn muốn lưu cặp key được generate.Tips: Để dễ quản lý, mình recommend các bạn hãy tạo folder riêng để chứa nó tại
/C/Users/<user_name>/.ssh. Và trong bài viết này, mình đã tạo và mở GitBash tại folder/C/Users/Minh TIen/.ssh/02_github![image.png]()
-
Copy và paste đoạn text bên dưới, thay đổi email trong ví dụ thành email account
GitHubcủa bạn:ssh-keygen -t ed25519 -C "your_email@example.com"Ấn
Entervà sẽ có các câu hỏi sau xuất hiện:> Enter file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):Chú thích: Đây là option để nhập file name cho các key, bạn có thể chọn tên tùy ý miễn sao thấy dễ nhớ là được sau đó ấn
Entervà sẽ xuất hiện 2 câu hỏi bên dưới> Enter passphrase (empty for no passphrase): [Type a passphrase] > Enter same passphrase again: [Type passphrase again]Chú thích: Đây là option để bảo mật thêm cho key, mình thường để mặc định và ấn
Enter
![image.png]()
Vậy là đã tạo xong một cặp ssh key cho tài khoản
GitHubthứ nhất, lặp lại các bước trên để tạo tiếp cặp ssh key cho tài khoảnGitHubcòn lại.
![image.png]()
Vậy là đã tạo đủ 2 cặp ssh key cho 2 account
GitHubrồi, chúng ta hãy đến bước kế tiếp nhé.
Add public key vừa tạo vào tài khoản GitHub
Ở bước này, chúng ta sẽ copy public key (file có đuôi .pub) của cặp ssh key vừa tạo cho tài khoản GitHub tương ứng
-
Double click vào file có đuôi .pub và copy toàn bộ nội dung file
![image.png]()
-
Truy cập vào tài khoản
GitHubcủa bạn và di chuyển đến phần Settings -
Lúc này, bạn sẽ thấy sidebar bên trái có một menu SSH and GPG keys, hãy ấn vào đây, sau đó click tiếp vào button New SSH key
![Pasted image 20260105004329.png]()
Lưu ý: Các menu trong ảnh theo thời gian sẽ có thể thay đổi nếu
GitHubthay đổi giao diện, vì vậy các bạn có thể tùy tình trạng UI để tìm ra nó nhé. -
Nhập các giá trị tương ứng vào các field, sau khi đã xong ấn
Add SSH key- (1): Nhập tên title để dễ nhớ, ví dụ như bạn đang dùng laptop cá nhận thì để
"Personal laptop" - (2): Chọn
Authentication Key - (3): Paste nội dung của public key đã copy vào
![image.png]()
- (1): Nhập tên title để dễ nhớ, ví dụ như bạn đang dùng laptop cá nhận thì để
-
Lặp lại các bước trên cho tài khoản
GitHubcòn lại:![image.png]()
![image.png]()
![image.png]()
Đã xong, giờ chúng ta chuyển qua bước tiếp theo.
Thiết lập cấu hình cho file config shortcut
Nhiệm vụ của chúng ta ở bước này là thiết lập file config để giúp xác định private key tương ứng với public key đã được thêm vào tài khoản GitHub ở các bước trên.
-
Mở file
confignằm tại thư mục/C/Users/<user_name>/.ssh, nếu file chưa tồn tại bạn có thể tự tạo file mới. -
Thiết lập
configtheo cú pháp sau:Host {name} HostName {IP or domain} IdentityFile {path_file_rsa_private} User {user_name}- Host: Alias (bí danh) để phân biệt giữa các tài khoản
GitHubkhác nhau - HostName: IP or domain của server (host), trong hướng dẫn này vì đang thao tác với server
GitHubnên giá trị sẽ là github.com - IdentityFile: đường dẫn đến
private keyfile đã được generate ở các bước trên và nó phải mapping vớipublic keyđã thêm vào accountGitHub - User: username, khi dùng với
Gitthì mặc định sẽ là username sẽ là git
Và đây là file
confighoàn thiện của mình:Host github-work HostName github.com User git IdentityFile ~/.ssh/02_github/github-minhtien0410 Host github-personal HostName github.com User git IdentityFile ~/.ssh/02_github/github-minhtien020900 - Host: Alias (bí danh) để phân biệt giữa các tài khoản
-
Tiếp theo, ta sẽ check nhanh thử phần thiết lập đã hoạt động chưa bằng lệnh
ssh -T <User>@<Host>. Và bên dưới là lệnh test với cấu hình của mình:ssh -T git@github-workssh -T git@github-personalNếu có xuất hiện câu hỏi Are you sure you want to continue connecting (yes/no/[fingerprint]) ? thì bạn chỉ cần nhập yes.
Và nếu thấy hiển thị như sau thì chúc mừnggg, phần thiết lập của chúng ta đã thành công 👏
Hi <username_cua_ban>! You've successfully authenticated, but GitHub does not provide shell access.
![image.png]()
Clone repository với cấu hình đã thiết lập
Ở bước này, ta sẽ thực hiện thao tác clone repository của mỗi account GitHub mà không cần phải nhập username và password thủ công nữa. Các bạn hãy tự tạo 2 repository cho mình, sau khi đã tạo xong giờ ta tiến hành clone chúng về.
-
Lấy và copy
URLcủa repository với các thao tác đã đánh dấu như trong hình:![image.png]()
-
Thay giá trị
github.comtrong link đã copy thành giá trịHosttương ứng đã cấu hình ở các bước trên.Ví dụ: Trong phần thiết lập riêng ở trên của mình thì URL sau khi chỉnh sửa lại sẽ như sau:
Account Host URL của repo ban đầu URL của repo sau khi chỉnh sửa minhtien04102000 github-work git@github.com:minhtien04102000/demo-ssh-key-work.gitgit@github-work:minhtien04102000/demo-ssh-key-work.gitminhtien020900 github-personal git@github.com:minhtien020900/demo-ssh-key.gitgit@github-personal:minhtien020900/demo-ssh-key.git -
Tiến hành clone repo về với URL đã được chỉnh sửa:
git clone git@github-work:minhtien04102000/demo-ssh-key-work.gitgit clone git@github-personal:minhtien020900/demo-ssh-key.git
![image.png]()
Vậy là đã xong, tới được đây là đã hoàn tất, chỉ cần thiết lập một lần thôi và từ nay về sau khi thao tác
pullpushcode các bạn không cần thiết lập lại hay nhậpusernamepasswordgì nữa cả 💫
Lời kết
Các step của bài hướng dẫn này được mình vừa viết vừa làm nên khả năng thành công là 99%, tuy nhiên sẽ vẫn có khả năng xảy ra một vài lỗi ngoài ý muốn, nếu gặp phải bạn hãy comment nhé, mình rất sẵn lòng hỗ trợ. Chúc các bạn thành công 💚
All rights reserved
















