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ụ:
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ể.
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:
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)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
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:
# Cho tài khoản 1
cat ~/.ssh/id_ed25519_account1.pub
# Cho tài khoản 2
cat ~/.ssh/id_ed25519_account2.pub
Copy toàn bộ nội dung của mỗi public key và thêm vào:
Để 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.
Mở Terminal và chỉnh sửa file config:
nano ~/.ssh/config
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 account1Host 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.comIdentityFile: Đường dẫn đến private key tương ứngIdentitiesOnly yes: Chỉ sử dụng key được chỉ định, không thử các key khácSau khi cấu hình xong, bạn cần sử dụng đúng alias khi clone repository:
git clone git@github.com:account1/repo-name.git
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.
Đây là phần cực kỳ quan trọng mà nhiều người thường bỏ qua!
Git có hai cấp độ cấu hình:
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.
Trong môi trường làm việc thực tế:
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ể:
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"
Để 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!
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:
git remote -v
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
Để 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...
Khi làm việc với nhiều tài khoản GitHub/GitLab trên cùng một máy:
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ự ánViệ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