HocTotGit.io

Làm việc nhóm (Collaboration)
  • Thuật ngữ trong collaboration
  • Lý thuyết về remote repository
  • Cấu hình SSH
  • Sử dụng nhiều SSH keys cho nhiều tài khoản
  • Quiz
  • Git clone
  • Git push
  • Git fetch
  • Git pull
  • Quiz
  • Remote branches
  • Feature branch workflow
  • Fork repository và open source
  • Làm việc với nhiều remote repository
  • Quiz
  • Tại sao code review quan trọng?
  • Code review vs PRs vs Merge Request
  • Quiz
Liên kết
Blog
Hỗ trợ

Email: work.lamsun@gmail.com

Yêu thích nền tảng

Hãy chia sẻ ý kiến của bạn

HocTotGit.io

© 2026 HocTotGit.

Sử dụng nhiều SSH keys cho nhiều tài khoản

Trong thực tế làm việc, bạn có thể cần làm việc với nhiều tài khoản GitHub/GitLab khác nhau trên cùng một máy tính. Ví dụ:

  • Tài khoản cá nhân cho các dự án riêng
  • Tài khoản công ty cho các dự án của công ty
  • Tài khoản khách hàng cho các dự án freelance

Mỗi tài khoản cần có SSH key riêng để đảm bảo bảo mật và quản lý rõ ràng. Bài học này sẽ hướng dẫn bạn cách cấu hình nhiều SSH keys và cách sử dụng chúng cho từng dự án cụ thể.


1. Tại sao cần nhiều SSH keys?

Khi làm việc với nhiều tổ chức hoặc dự án khác nhau, việc sử dụng SSH keys riêng biệt giúp:

  • Bảo mật tốt hơn: Mỗi tài khoản có khóa riêng, giảm rủi ro khi một khóa bị lộ
  • Quản lý rõ ràng: Dễ dàng phân biệt và quản lý quyền truy cập cho từng dự án
  • Tuân thủ chính sách công ty: Nhiều công ty yêu cầu sử dụng tài khoản công ty riêng cho các dự án công việc
  • Tránh nhầm lẫn: Đảm bảo commit được gửi với đúng danh tính phù hợp với từng dự án

2. Tạo nhiều SSH keys

2.1. Tạo SSH key cho tài khoản đầu tiên

Nếu bạn chưa có SSH key cho tài khoản đầu tiên, hãy tạo một cặp khóa:

ssh-keygen -t ed25519 -C "email1@example.com" -f ~/.ssh/id_ed25519_account1

Giải thích các tham số:

  • -t ed25519: Sử dụng thuật toán ed25519 (nhanh và bảo mật hơn RSA)
  • -C "email1@example.com": Thêm comment (thường là email) để nhận diện khóa
  • -f ~/.ssh/id_ed25519_account1: Chỉ định tên file cho private key (public key sẽ có thêm đuôi .pub)

2.2. Tạo SSH key cho tài khoản thứ hai

Tạo một cặp khóa riêng cho tài khoản thứ hai:

ssh-keygen -t ed25519 -C "email2@example.com" -f ~/.ssh/id_ed25519_account2

2.3. Thêm public keys vào GitHub/GitLab

Sau khi tạo xong, bạn cần thêm public key của mỗi tài khoản vào dịch vụ lưu trữ tương ứng:

  1. Xem nội dung public key:
# Cho tài khoản 1
cat ~/.ssh/id_ed25519_account1.pub

# Cho tài khoản 2
cat ~/.ssh/id_ed25519_account2.pub
  1. Copy toàn bộ nội dung của mỗi public key và thêm vào:

    • GitHub: Settings → SSH and GPG Keys → New SSH key
    • GitLab: Preferences → SSH Keys → Add new key
    • Bitbucket: Personal settings → SSH keys → Add key

3. Cấu hình SSH config

Để Git tự động sử dụng đúng SSH key cho từng tài khoản, bạn cần cấu hình file ~/.ssh/config.

3.1. Tạo hoặc chỉnh sửa file config

Mở Terminal và chỉnh sửa file config:

nano ~/.ssh/config

3.2. Thêm cấu hình cho các tài khoản

Thêm nội dung sau vào file config:

# Tài khoản 1 - Tài khoản mặc định (cá nhân)
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_account1
  IdentitiesOnly yes

# Tài khoản 2 - Tài khoản công ty (hoặc tài khoản khác)
Host github-company
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_account2
  IdentitiesOnly yes

Giải thích:

  • Host github.com: Đây là alias cho tài khoản đầu tiên. Khi clone/push với git@github.com:..., Git sẽ sử dụng key của account1
  • Host github-company: Đây là alias tùy chỉnh cho tài khoản thứ hai. Bạn có thể đặt tên bất kỳ (ví dụ: github-work, github-client)
  • HostName github.com: Server thực tế vẫn là github.com
  • IdentityFile: Đường dẫn đến private key tương ứng
  • IdentitiesOnly yes: Chỉ sử dụng key được chỉ định, không thử các key khác

4. Clone repository với đúng tài khoản

Sau khi cấu hình xong, bạn cần sử dụng đúng alias khi clone repository:

4.1. Clone với tài khoản đầu tiên (mặc định)

git clone git@github.com:account1/repo-name.git

4.2. Clone với tài khoản thứ hai

git clone git@github-company:account2/repo-name.git

Lưu ý quan trọng: Thay github.com bằng alias github-company để Git sử dụng đúng SSH key của tài khoản thứ hai.


5. ⚠️ Cấu hình Git local cho từng dự án (QUAN TRỌNG)

Đây là phần cực kỳ quan trọng mà nhiều người thường bỏ qua!

5.1. Vấn đề với Git config global

Git có hai cấp độ cấu hình:

  • Global config: Áp dụng cho tất cả các repository trên máy của bạn
  • Local config: Chỉ áp dụng cho repository hiện tại

Nếu bạn chỉ cấu hình global (git config --global user.name và git config --global user.email), tất cả các commit sẽ sử dụng thông tin này, bất kể bạn đang làm việc với dự án nào.

5.2. Tại sao cần config local?

Trong môi trường làm việc thực tế:

  • Dự án công ty yêu cầu bạn commit với email công ty và tên theo quy định của công ty
  • Dự án cá nhân bạn muốn dùng email và tên cá nhân
  • Dự án khách hàng có thể yêu cầu thông tin cụ thể khác

Nếu bạn commit với thông tin sai (ví dụ: dùng email cá nhân trong dự án công ty), bạn có thể:

  • Vi phạm chính sách của công ty
  • Gây nhầm lẫn về quyền sở hữu code
  • Không đáp ứng yêu cầu audit/kiểm tra

5.3. Cách cấu hình local cho từng dự án

Sau khi clone repository, luôn luôn cấu hình local cho dự án đó:

Cho dự án công ty:

cd /path/to/company-project
git config user.name "Tên của bạn (theo quy định công ty)"
git config user.email "your-work-email@company.com"

Cho dự án cá nhân:

cd /path/to/personal-project
git config user.name "Tên cá nhân của bạn"
git config user.email "your-personal-email@gmail.com"

Cho dự án khách hàng:

cd /path/to/client-project
git config user.name "Tên theo yêu cầu khách hàng"
git config user.email "your-client-email@client.com"

5.4. Kiểm tra cấu hình

Để kiểm tra cấu hình hiện tại của một repository:

# Xem tất cả config (local sẽ override global)
git config --list

# Hoặc xem riêng từng giá trị
git config user.name
git config user.email

Lưu ý: Nếu bạn thấy giá trị từ global config, nghĩa là bạn chưa cấu hình local. Hãy cấu hình local ngay!


6. Cập nhật remote URL cho repository đã clone

Nếu bạn đã clone một repository trước khi cấu hình SSH, bạn có thể cần cập nhật remote URL:

6.1. Kiểm tra remote URL hiện tại

git remote -v

6.2. Cập nhật remote URL

Nếu bạn cần chuyển sang sử dụng alias khác:

# Thay đổi từ github.com sang github-company
git remote set-url origin git@github-company:account2/repo-name.git

7. Kiểm tra SSH key đang sử dụng

Để xác nhận bạn đang sử dụng đúng SSH key:

Cho tài khoản đầu tiên:

ssh -T git@github.com
# Kết quả mong đợi: Hi account1! You've successfully authenticated...

Cho tài khoản thứ hai:

ssh -T git@github-company
# Kết quả mong đợi: Hi account2! You've successfully authenticated...

Tổng kết

Khi làm việc với nhiều tài khoản GitHub/GitLab trên cùng một máy:

  1. Tạo SSH key riêng cho mỗi tài khoản với tên file khác nhau
  2. Cấu hình SSH config với các alias khác nhau cho mỗi tài khoản
  3. Sử dụng đúng alias khi clone repository
  4. ⚠️ QUAN TRỌNG: Luôn cấu hình Git local (user.name và user.email) cho từng dự án để đảm bảo commit được gửi với đúng danh tính phù hợp với yêu cầu của dự án

Việc cấu hình đúng không chỉ giúp bạn làm việc hiệu quả mà còn tránh vi phạm các quy định của công ty hoặc dự án.

Tiếp theo: Quiz