Sử dụng SSH cho Xác thực không cần mật khẩu GitHub
Xác thực với GitHub thường liên quan đến việc sử dụng mã thông báo truy cập hoặc mật khẩu. Tuy nhiên, những phương pháp này có thể bất tiện và không an toàn, đặc biệt là khi truy cập GitHub từ nhiều thiết bị.
GitHub cung cấp tùy chọn sử dụng Secure Shell (SSH) để xác thực. SSH trình bày một giao thức mạng an toàn để truy cập máy từ xa. Tính năng này tỏ ra đặc biệt có giá trị trong các tình huống yêu cầu tự động hóa hoặc truy cập từ xa thường xuyên.
Mục Lục
Hiểu xác thực SSH
Xác thực bằng SSH liên quan đến việc sử dụng các khóa mật mã để thiết lập kết nối an toàn (đường hầm) giữa máy khách (máy cục bộ) và máy chủ (GitHub).
Khi sử dụng SSH cho GitHub, người dùng sẽ tạo một cặp khóa SSH—một khóa chung và một khóa riêng. Khóa chung được tải lên tài khoản GitHub của người dùng, trong khi khóa riêng vẫn được lưu trữ an toàn trên máy cục bộ của người dùng.
Quá trình này có thể được ví như khái niệm về ổ khóa và chìa khóa. Khóa công khai (khóa) nhằm mục đích chia sẻ công khai và lưu trữ an toàn ở phía máy chủ. Nó hoạt động như một đối trọng với khóa riêng, cho phép máy chủ xác minh danh tính của máy cục bộ của bạn. Ngược lại, khóa riêng (key) hoạt động như một mã định danh duy nhất được lưu trữ riêng trên máy cục bộ của bạn, cho phép xác thực thành công với máy chủ.
Trong quá trình xác thực với GitHub, máy cục bộ của bạn hiển thị khóa riêng của nó làm bằng chứng nhận dạng. Máy chủ sẽ kiểm tra xem khóa chung tương ứng được liên kết với tài khoản GitHub của bạn có khớp với khóa riêng đã cho hay không. Nếu các khóa khớp nhau, máy chủ sẽ cấp quyền truy cập, thiết lập kết nối được mã hóa và bảo mật để liên lạc.
Thiết lập SSH cho GitHub
Trong phần này, bạn sẽ thấy cách thiết lập SSH để xác thực với GitHub.
1. Tạo cặp khóa SSH
Quá trình tạo cặp khóa SSH là bước đầu tiên để sử dụng SSH để xác thực.
- Mở thiết bị đầu cuối hoặc dấu nhắc lệnh của bạn.
- Thực hiện lệnh sau để tạo cặp khóa SSH mới:
ssh-keygen -t rsa -b 4096 -C "youremail@domain.com" - Bạn sẽ được nhắc nhập vị trí tệp để lưu cặp khóa. Nhấn Đi vào để chấp nhận vị trí mặc định (~/.ssh/id_rsa) hoặc chỉ định một vị trí tùy chỉnh.
> Generating public/private rsa key pair.
> Enter file in which to save the key (/home/vagrant/.ssh/id_rsa): - Tiếp theo, bạn sẽ được yêu cầu nhập cụm mật khẩu. Mặc dù là tùy chọn nhưng việc thêm cụm mật khẩu đóng vai trò là một mức độ bảo mật bổ sung. Hãy chắc chắn rằng bạn nhớ cụm mật khẩu của bạn.
> Enter passphrase (empty for no passphrase):
> Enter same passphrase again: - Sau khi tạo cặp khóa, bạn sẽ thấy hai tệp ở vị trí đã chỉ định. id_rsa (khóa riêng) và id_rsa.pub (khóa công khai).
> Your identification has been saved in /home/vagrant/.ssh/id_rsa.
> Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub. - Sau khi hoàn thành, dấu vân tay của phím và hình ảnh nghệ thuật ngẫu nhiên được hiển thị.
- Cuối cùng, bạn sẽ cần nội dung của khóa công khai để thêm vào GitHub. Chạy lệnh sau để lấy nội dung:
cat ~/.ssh/id_rsa.pub
Đảm bảo chỉ định đường dẫn (~/.ssh/id_rsa.pub trong trường hợp của tôi) mà bạn đã sử dụng khi tạo khóa.
Sao chép nội dung vào một vị trí an toàn và tạm thời để sử dụng sau này.
2. Thêm Public Key vào GitHub
Bây giờ bạn đã tạo một cặp khóa SSH, bạn cần thêm khóa chung vào tài khoản GitHub của mình.
- Đăng nhập vào tài khoản GitHub của bạn và truy cập Tài khoản của bạn Cài đặt.
- Bấm vào Khóa SSH và GPG nằm trên thanh bên trái.
- Bấm vào Khóa SSH mới.
- Cung cấp khóa SSH của bạn Tiêu đề.
- Dán nội dung khóa công khai vào Chìa khóa cánh đồng.
- Cuối cùng, bấm vào Thêm khóa SSH để lưu khóa SSH vào tài khoản GitHub của bạn.
Bạn đã xuất thành công khóa công khai sang Tài khoản GitHub của mình bằng những khóa này.
3. Định cấu hình Tác nhân SSH
Tác nhân SSH là một chương trình giúp quản lý các khóa SSH và cung cấp một cách an toàn để lưu trữ và sử dụng chúng. Nó hoạt động như một trung gian giữa máy cục bộ của bạn và máy chủ từ xa trong quá trình xác thực SSH. Điều này cho phép bạn quản lý nhiều khóa SSH cho các tài khoản GitHub khác nhau.
- Đảm bảo rằng tác nhân SSH đang chạy.
$ eval "$(ssh-agent -s)"
> Agent pid 2757 - Thêm khóa riêng vào tác nhân SSH.
$ ssh-add ~/.ssh/id_rsa
> Enter passphrase for /home/vagrant/.ssh/id_rsa:
> Identity added: /home/vagrant/.ssh/id_rsa (/home/vagrant/.ssh/id_rsa)
Bạn đã cấu hình thành công tác nhân SSH để quản lý khóa của mình.
4. Kiểm tra kết nối SSH
Giờ đây, bạn có thể kiểm tra để xác minh rằng kết nối SSH của mình được thiết lập đúng cách và bạn có thể xác thực với GitHub bằng SSH.
- Chạy lệnh bên dưới để kiểm tra kết nối SSH với GitHub;
ssh -T git@github.comnếu mọi thứ suôn sẻ, bạn sẽ thấy cảnh báo liên quan đến dấu vân tay. Xác nhận dấu vân tay và nhập Đúng để tiếp tục.
> The authenticity of host 'github.com (140.92.130.4)' can't be established.
> ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
> Are you sure you want to continue connecting (yes/no)? - khi gõ Đúngbạn sẽ thấy kết quả tương tự như bên dưới.
> Warning: Permanently added 'github.com,140.92.130.4' (ECDSA) to the list of known hosts.
> Hi princewillingoo! You've successfully authenticated, but GitHub does not provide shell access.
Điều này cho thấy xác thực đã thành công.
Quản lý kho lưu trữ với SSH
Định cấu hình SSH cho phép bạn quản lý các kho lưu trữ của mình mà không phải lo lắng về những rắc rối về mật khẩu và mã thông báo truy cập.
Đặt URL từ xa
git remote set-url origin git@github.com:<username>/<repository>.git
Nhân bản một kho lưu trữ
git clone git@github.com:<username>/<repository>.git
Đẩy các thay đổi vào kho lưu trữ
git push origin <branch>
Kéo các thay đổi từ một kho lưu trữ
git pull origin <branch>
Ưu điểm của SSH qua xác thực mật khẩu
Việc sử dụng SSH để xác thực mang lại một số lợi thế đáng chú ý so với các phương thức xác thực dựa trên mật khẩu truyền thống. Điêu nay bao gôm:
- Xác thực SSH loại bỏ nhu cầu về mật khẩu, giảm nguy cơ bị đánh cắp thông tin xác thực.
- Việc sử dụng các khóa mật mã giúp nó miễn nhiễm hơn với các cuộc tấn công vũ phu so với mật khẩu.
- Nếu khóa riêng tư của bạn bị xâm phạm, bạn có thể thu hồi và thay thế khóa đó, khiến khóa bị xâm phạm trở nên vô dụng.
Vì lý do này, xác thực SSH có xu hướng là một lựa chọn tốt hơn so với xác thực mật khẩu.
Thực tiễn tốt nhất và khắc phục sự cố
Để đảm bảo thiết lập SSH trơn tru và an toàn, cần tuân theo các phương pháp hay nhất và nhận thức được các sự cố phổ biến có thể xảy ra cũng như cách khắc phục sự cố.
- Luôn đặt cụm mật khẩu để tạo thêm một lớp bảo mật.
- Thực hành luân phiên phím và sao lưu thường xuyên.
- Xác nhận từng bước để tránh lỗi quyền hoặc cấu hình tác nhân SSH không chính xác.
Bằng cách tuân thủ các phương pháp hay nhất này, bạn có thể tự tin sử dụng xác thực SSH cho GitHub.
Tính linh hoạt của SSH
SSH được sử dụng rộng rãi trong các lĩnh vực khác để quản lý máy chủ, bộ vi điều khiển và thiết bị mạng từ xa vì nó cho phép truy cập an toàn vào giao diện dòng lệnh (CLI), cho phép người dùng thực hiện các tác vụ khác nhau, định cấu hình cài đặt, truyền tệp và khắc phục sự cố.