+1

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 usernamepassword 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 GitHub riê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.

  1. Mở GitBash tạ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

  2. Copy và paste đoạn text bên dưới, thay đổi email trong ví dụ thành email account GitHub của bạn:

    ssh-keygen -t ed25519 -C "your_email@example.com"
    

    Ấn Enter và 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 Enter và 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 image.png

    Vậy là đã tạo xong một cặp ssh key cho tài khoản GitHub thứ nhất, lặp lại các bước trên để tạo tiếp cặp ssh key cho tài khoản GitHub còn lại.

    image.png image.png

    Vậy là đã tạo đủ 2 cặp ssh key cho 2 account GitHub rồ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

  1. Double click vào file có đuôi .pub và copy toàn bộ nội dung file image.png

  2. Truy cập vào tài khoản GitHub của bạn và di chuyển đến phần Settings

  3. 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 keyPasted image 20260105004329.png

    Lưu ý: Các menu trong ảnh theo thời gian sẽ có thể thay đổi nếu GitHub thay đổ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é.

  4. 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

    Pasted image 20260105004841.png image.png

  5. Lặp lại các bước trên cho tài khoản GitHub cò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.

  1. Mở file config nằ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.

  2. Thiết lập config theo 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 GitHub khá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 GitHub nên giá trị sẽ là github.com
    • IdentityFile: đường dẫn đến private key file đã được generate ở các bước trên và nó phải mapping với public key đã thêm vào account GitHub
    • User: username, khi dùng với Git thì mặc định sẽ là username sẽ là git

    Và đây là file config hoà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
    
  3. 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-work
    
     ssh -T git@github-personal
    

    Nế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 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ề.

  1. Lấy và copy URL của repository với các thao tác đã đánh dấu như trong hình: image.png

  2. Thay giá trị github.com trong link đã copy thành giá trị Host tươ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.git git@github-work:minhtien04102000/demo-ssh-key-work.git
    minhtien020900 github-personal git@github.com:minhtien020900/demo-ssh-key.git git@github-personal:minhtien020900/demo-ssh-key.git
  3. 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.git
    
    git clone git@github-personal:minhtien020900/demo-ssh-key.git
    

    image.png 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 pull push code các bạn không cần thiết lập lại hay nhập username password gì 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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí