0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Sử dụng nhiều khóa SSH cho tài khoản Git cá nhân và công việc

Đăng vào 8 tháng trước

• 6 phút đọc

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ụcsử dụng alias cho host.

Mục lục

  1. Giới thiệu
  2. Tự động theo thư mục
  3. Sử dụng alias cho host
  4. So sánh hai phương pháp
  5. Thực tiễn tốt nhất
  6. Những cạm bẫy phổ biến
  7. Mẹo hiệu suất
  8. Khắc phục sự cố
  9. 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 Copy
ssh -V

Tiếp theo, hãy cấu trúc thư mục của bạn như sau:

bash Copy
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 Copy
# 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 Copy
# 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 Copy
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 Copy
git remote -v

Sao chép URL và thêm work vào phía trước, sau đó thay thế bằng:

bash Copy
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.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào