Bằng cách dùng xác thực không mật khẩu qua SSH để đăng nhập GitHub, bạn sẽ tiết kiệm được rất nhiều thời gian. Dưới đây là hướng dẫn chi tiết.
Xác thực trên GitHub thường liên quan tới việc dùng một token truy cập hoặc mật khẩu. Tuy nhiên, những phương thức này có thể không thuận tiện và kém bảo mật, nhất là khi truy cập GitHub từ nhiều thiết bị.
GitHub cung cấp lựa chọn dùng Secure Shell (SSH) để xác thực. SSH trình bày một giao thức mạng an toàn cho truy cập máy từ xa. Tính năng này đặc biệt đáng giá trong nhiều tình huống đòi hỏi truy cập từ xa tự động hoặc thường xuyên.
Xác thực SSH là gì?
Xác thực với SSH liên quan tới việc dùng các khóa mật mã thiết lập kết nối an toàn (tunnel) giữa một client (máy cục bộ) và server (GitHub).
Khi dùng SSH cho GitHub, một người dùng tạo một cặp khóa SSH - một khóa công khai và một khóa riêng tư. Khóa công khai được upload lên tài khoản GitHub của người dùng, còn khóa riêng tư vẫn được lưu 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 cá nhân, cho phép máy chủ xác minh danh tính 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 khi xác thực trên GitHub, máy cục bộ hiện khóa riêng như một bằng chứng nhận dạng. Server này kiểm tra xem liệu khóa công khai 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 tư được cung cấp hay không. Nếu các khóa khớp nhau, server cấp quyền truy cập, thiết lập kết nối được mã hóa và an toàn cho giao tiếp.
Thiết lập SSH cho GitHub
Ở 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 dùng SSH cho việc xác thực.
1. Mở terminal hoặc cửa sổ nhắc lệnh.
2. Chạy lệnh tạo cặp khóa SSH mới sau:
ssh-keygen -t rsa -b 4096 -C "youremail@domain.com"
3. Bạn sẽ được nhắc nhập một vị trí file để lưu cặp khóa. Nhấn Enter để chấp nhận vị trí mặc định (~/.ssh/id_rsa) hoặc xác định một vị trí tùy biến.
> Generating public/private rsa key pair.
> Enter file in which to save the key (/home/vagrant/.ssh/id_rsa):
4. Tiếp theo, bạn sẽ được yêu cầu nhập một passphrase. Dù là tùy chọn, hãy thêm một passpharase hoạt động như một cấp bảo mật bổ sung. Đảm bảo bạn nhớ passphrase.
> Enter passphrase (empty for no passphrase):
> Enter same passphrase again:
5. Sau khi tạo cặp khóa, bạn sẽ thấy 2 file ở id_rsa (khóa riêng tư) 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.
6. Sau khi hoàn thành, fingerprint các phím và ảnh nghệ thuật ngẫu nhiên được hiển thị.
7. Cuối cùng, bạn sẽ cần nội dung của khóa công khai để thêm GitHub. Chạy lệnh sau để tải nội dung:
cat ~/.ssh/id_rsa.pub
Đảm bảo chỉ định đường dẫn (ở đây là ~/.ssh/id_rsa.pub), bạn đã dùng khi tạo các khóa.
Sao chép nội dung tới vị trí an toàn và tạm thời để sử dụng sau.
2. Thêm khóa công khai cho GitHub
Giờ bạn đã tạo một cặp khóa SSH, bạn cần thêm khóa công khai vào tài khoản GitHub.
1. Đăng nhập tài khoản GitHub và tới Account Settings.
2. Click SSH and GPG keys ở thanh bên trái.
3. Click New SSH key.
4. Đặt tiêu đề (Title) cho SSH key.
5. Dán nội dung khóa công khai vào trường Key.
6. Cuối cùng, click Add SSH key để lưu khóa SSH vào tài khoản GitHub của bạn.
Bạn đã thành công xuất khóa công khai sang GitHub Account cá nhân.
3. Cấu hình SSH Agent
SSH Agent 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 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 giúp bạn quản lý nhiều khóa SSH cho các tài khoản GitHub khác nhau.
1. Đảm bảo SSH Agent đang chạy.
$ eval "$(ssh-agent -s)"
> Agent pid 2757
Thêm khóa riêng tư cho SSH Agent
$ 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 đã thành công cấu hình một SSH Agent để quản lý khóa.
4. Kiểm tra kết nối SSH
Giờ bạn có thể kiểm tra để xác minh kết nối SSH được thiết lập đúng cách. Bạn có thể xác thực trên 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.com
Nếu mọi thứ đều ổn, bạn sẽ thấy cảnh báo liên quan tới fingerprint. Xác nhận fingerprint và nhập yes để 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)?
Sau khi nhập yes, bạ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 biết xác thực đã thành công.
Quản lý repository bằng SSH
Cấu hình SSH cho phép bạn quản lý các repository nếu không phải lo lắng về rắc rối liên quan tới mật khẩu và token truy cập.
Đặt URL từ xa
git remote set-url origin git@github.com:<username>/<repository>.git
Nhân bản repository
git clone git@github.com:<username>/<repository>.git
Đẩy thay đổi vào repository
git push origin <branch>
Đặt thay đổi từ một repository
git pull origin <branch>
Lấy thay đổi từ repository
git pull origin <branch>
Ưu điểm dùng SSH xác thực mật khẩu
Dùng SSH xác thực cung cấp một số ưu điểm nổi bật so với những phương thức xác thực dựa trên mật khẩu, bao gồm:
- Xác thực SSH loại bỏ nhu cầu cần thiết cho mật khẩu, giảm rủi ro bị đánh cắp danh tính.
- Sử dụng các khóa mật mã giúp nó miễn nhiễm với các vụ tấn công nguy hiểm, an toàn hơn so với dùng mật khẩu.
- Nếu khóa riêng tư bị xâm phạm, bạn có thể thu hồi và thay thế nó, 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 thường là lựa chọn tốt hơn so với xác thực bằng mật khẩu.
Áp dụng thực tiễn tốt nhất và khắc phục sự cố
Để đảm bảo thiết lập SSH mượt mà và an toàn, bạn nên làm theo những cách áp dụng tốt nhất và biết các lỗi phổ biến có thể xảy ra cùng giải pháp khắc phục chúng.
- Luôn đặt passphrase để bổ sung thêm một lớp bảo mật.
- Luân phiên thay đổi phím và sao lưu thường xuyên.
- Xác nhận từng bước để tránh lỗi phần quyền hoặc cấu hình SSH agent.
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.