Sử dụng nhiều khóa SSH cho tài khoản Git cá nhân và công việc
Khi bạn có cả tài khoản Git cá nhân và công việc (hoặc thậm chí là tài khoản freelancer), có thể bạn đã gặp phải vấn đề khi các khóa SSH bị lẫn lộn. Đừng lo lắng! Trong bài viết này, chúng ta sẽ khám phá hai phương pháp để quản lý các khóa SSH của mình một cách dễ dàng: tự động theo thư mục và sử dụng alias cho host.
Mục lục
- Giới thiệu
- Tự động theo thư mục
- Sử dụng alias cho host
- So sánh hai phương pháp
- Thực tiễn tốt nhất
- Những cạm bẫy phổ biến
- Mẹo hiệu suất
- Khắc phục sự cố
- Kết luận
Giới thiệu
Việc quản lý nhiều tài khoản Git có thể gây khó khăn, đặc biệt khi bạn cần chuyển đổi giữa các khóa SSH khác nhau cho tài khoản cá nhân và công việc. Trong bài viết này, chúng ta sẽ tìm hiểu các phương pháp hiệu quả và dễ sử dụng để cấu hình SSH cho cả hai tài khoản mà không gặp phải rắc rối.
Tự động theo thư mục
Phương pháp này là cách tôi ưa thích nhất. Khi bạn ở trong thư mục của dự án, SSH sẽ tự động biết khóa nào cần sử dụng. Lưu ý rằng phương pháp này chỉ hoạt động với OpenSSH 7.3 trở lên và yêu cầu bạn phải sắp xếp các dự án theo các thư mục riêng biệt (ví dụ: cá nhân ở một thư mục và công việc ở thư mục khác).
Cấu hình SSH
Để kiểm tra phiên bản OpenSSH của bạn, hãy chạy lệnh sau:
bash
ssh -V
Tiếp theo, hãy cấu trúc thư mục của bạn như sau:
bash
projects/ # sẽ sử dụng khóa cá nhân
- blog
- nghiên_cứu
- urubu_do_pix
- work/ # từ đây trở đi sẽ sử dụng khóa công việc
- projectA
- projectB
Tất cả các dự án công việc sẽ được lưu trong thư mục ‘work’. Giờ đây, chúng ta sẽ cấu hình SSH để sử dụng khóa cá nhân cho các dự án bên ngoài thư mục ‘work’ và khóa công việc cho các dự án bên trong.
Chỉnh sửa file cấu hình SSH tại ~/.ssh/config:
bash
# Cấu hình mặc định, sử dụng khóa cá nhân
Host github.com
AddKeysToAgent yes
UseKeychain yes # (nếu đang dùng macOS)
IdentityFile ~/.ssh/my_key
# Khóa cho các dự án công việc
Match exec "[[ $PWD == /home/tulio/projects/work* ]]"
IdentityFile ~/.ssh/work_key
Đừng quên thay đổi các đường dẫn cho phù hợp với khóa và thư mục của bạn.
Với cấu hình này, nếu bạn thực hiện clone, push hoặc pull ở bất kỳ đâu khác ngoài thư mục ‘work’, SSH sẽ sử dụng khóa cá nhân. Khi ở trong thư mục ‘work’, nó sẽ sử dụng khóa công việc. Thật đơn giản!
Sử dụng alias cho host
Nếu phiên bản SSH của bạn không hỗ trợ Match exec, bạn có thể sử dụng alias. Trong trường hợp này, bạn sẽ tạo “alias” và chỉ định git remote cho chúng.
Cấu hình alias
Chỉnh sửa file ~/.ssh/config:
bash
# Tài khoản cá nhân
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/my_key
# Tài khoản công việc
Host work.github.com
HostName github.com
User git
IdentityFile ~/.ssh/work_key
Bạn có thể sáng tạo với alias, ví dụ như sử dụng “w” thay vì “work.github.com”, nhưng hãy nhớ rằng khi clone, bạn phải sử dụng alias này (ví dụ: git@w:org/project.git).
Khi clone, chỉ cần thêm work trước github, ví dụ:
bash
git clone git@work.github.com:...
Nếu bạn đã có dự án được clone, chỉ cần thay đổi URL của origin:
Xem URL hiện tại của repository:
bash
git remote -v
Sao chép URL và thêm work vào phía trước, sau đó thay thế bằng:
bash
git remote set-url origin git@work.github.com:...
So sánh hai phương pháp
| Phương pháp | Ưu điểm | Nhược điểm |
|---|---|---|
| Tự động theo thư mục | Dễ dàng, nhanh chóng | Cần OpenSSH 7.3+ và cấu trúc thư mục rõ ràng |
| Sử dụng alias cho host | Hoạt động trên mọi phiên bản SSH | Cần nhớ sử dụng alias khi clone |
Thực tiễn tốt nhất
- Luôn sao lưu các khóa SSH: Trước khi thực hiện bất kỳ thay đổi nào, hãy chắc chắn rằng bạn đã sao lưu các khóa SSH của mình.
- Kiểm tra quyền truy cập: Đảm bảo rằng các khóa SSH của bạn có quyền truy cập thích hợp, sử dụng lệnh
chmod 600 ~/.ssh/my_key. - Cập nhật thường xuyên: Đảm bảo rằng bạn luôn sử dụng phiên bản OpenSSH mới nhất để có được các tính năng và bản vá bảo mật mới nhất.
Những cạm bẫy phổ biến
- Quên chỉnh sửa file cấu hình: Nếu bạn quên cấu hình file
~/.ssh/config, SSH sẽ không biết sử dụng khóa nào. - Sử dụng cùng một khóa cho cả hai tài khoản: Điều này có thể dẫn đến nhầm lẫn và lỗi khi thực hiện các thao tác git.
Mẹo hiệu suất
- Sử dụng SSH Agent: Sử dụng SSH Agent để lưu trữ các khóa SSH trong phiên làm việc của bạn có thể tiết kiệm thời gian nhập mật khẩu.
- Thực hiện kiểm tra định kỳ: Thường xuyên kiểm tra xem các khóa SSH của bạn có còn hoạt động và an toàn hay không.
Khắc phục sự cố
- Lỗi xác thực: Nếu bạn gặp lỗi xác thực, hãy kiểm tra lại đường dẫn đến khóa trong file cấu hình.
- Không thể kết nối đến Git: Kiểm tra xem bạn có kết nối Internet và kiểm tra cấu hình firewall có chặn SSH hay không.
Kết luận
Hiện tại, tôi sử dụng phương pháp tự động theo thư mục vì nó tiết kiệm thời gian và tránh được sai sót. Tuy nhiên, phiên bản sử dụng alias cũng rất hiệu quả và có thể áp dụng ở bất kỳ đâu. Dù bạn chọn phương pháp nào, kết quả cuối cùng là bạn sẽ không còn gặp phải lỗi push vì sử dụng khóa sai nữa. Hãy thử nghiệm với cả hai phương pháp và chọn cách nào phù hợp nhất với bạn!
FAQ
1. Làm thế nào để kiểm tra phiên bản OpenSSH?
Bạn có thể kiểm tra phiên bản bằng lệnh ssh -V.
2. Tôi có thể sử dụng cùng một khóa cho cả tài khoản cá nhân và công việc không?
Không nên, vì điều này có thể gây nhầm lẫn và lỗi khi làm việc với git.
3. Làm thế nào để thay đổi mật khẩu cho khóa SSH?
Bạn có thể sử dụng lệnh ssh-keygen -p để thay đổi mật khẩu cho khóa SSH của mình.