Để bảo vệ dữ liệu người dùng, các khóa xác thực được sử dụng nhiều hơn. Trong đó việc tạo SSH Key có ứng dụng lớn hơn cả đối với vấn đề này. Đặc biệt khi bạn kết nối các máy tính từ xa qua một mạng không an toàn thì nó có vai trò cực lớn. Trong bài viết này, chúng tôi muốn hướng dẫn người dùng các thực hiện tạo khóa thông qua ssh-keygen.
ssh-keygen là gì?
Đối với người dùng thường xuyên sử dụng và tạo SSH Key hẳn là biết tới ssh-keygen. Đây là một công cụ cho phép bạn tạo các khóa xác thực mới. Các cặp khóa được tạo này có thể sử dụng để đăng nhập, xác thực máy chủ hoặc đăng nhập một lần.
SSH Keys và Public Key Authentication
Giao thức SSH sử dụng khóa công khai để xác thực giữa máy chủ và người dùng. Trong đó các khóa xác thực là SSH Key và được tạo bởi chương trình ssh-keygen.
SSH đã giới thiệu và sử dụng Public Key Authentication (khóa công khai) như một giải pháp cho .rhosts. Nó có khả năng cải thiện tính bảo mật, loại bỏ việc máy chủ bị xâm nhập và đánh cắp mật khẩu người dùng. Thông qua cách tránh yêu cầu lưu trữ mật khẩu trong tệp để giúp bạn kết nối an toàn hơn.
Có thể thấy khóa SSH cũng giống như thông tin đăng nhập xác thực mật khẩu. Vậy nên nó cần quản lý như tên đăng nhập hay mật khẩu. Nếu các khóa không còn cần thiết hay không sử dụng thì nên được loại bỏ.
Tạo SSH Key để xác thực người dùng
Một cách cực kỳ đơn giản để tạo khóa SSH chính là chạy ssh-keygen không có đối số. Ở trường hợp này bạn cần nêu tên tệp lưu khóa. Ví dụ như sau:
{{EJS0}}
Như bạn thấy, đầu tiên ssh-keygen sẽ hỏi nơi lưu tệp. Thông thường các khóa SSH sẽ được lưu vào tệp .ssh. Tuy nhiên ở các doanh nghiệp thì vị trí lưu sẽ khác nhau. Hơn nữa tên tệp khóa cũng phụ thuộc vào thuật toán. Có thể thấy ở các câu lệnh trên sử dụng thuật toán RSA (id_rsa). Ngoài ra cũng có thể dùng id_dsa, id_ecdsa.
Tiếp đến, quan trọng hơn cả khi tạo SSH Key chính là cụm mật khẩu. Nó được sử dụng để mã hóa khóa nên cho dù khi ai đó lấy tệp khóa riêng cũng không thể dùng được. Một lưu ý nhỏ đó là cụm mật khẩu phải thật sự mạnh.
Chọn thuật toán và kích thước khóa
Ở trên bạn có thể thấy việc sử dụng thuật toán là một phần quan trọng trong khi tạo khóa. SSH hỗ trợ một số thuật toán công khai cho các khóa, cụ thể như:
- rsa: thuật toán dựa trên độ khó của việc phân tích số lượng lớn. Kích thước khóa lúc này ít nhất là 2048 bit và 4068 bit là tốt nhất. Tuy nhiên RSA hiện tại đã khá cũ và bạn nên chọn một thuật toán hiện đại hơn. Hiện nay tất cả máy khách SSH đều hỗ trợ thuật toán này.
- dsa: là một thuật toán chữ ký số, nó dựa trên độ khó của tính toán logarit rời rạc. Kích thước khóa thường sử dụng là 1024 bit. Tuy nhiên DSA cũng không được khuyến khích sử dụng nhiều.
- ecdsa: cũng là một thuật toán chữ ký số nhưng khá mới dựa trên các đường cong elip. Là thuật toán hiện đại nên sử dụng, có ba kích thước khóa bao gồm: 256 bit, 384 bit và 521 bit. Trong đó 521 bit cho khả năng an toàn hơn cả. ecdsa cũng được hầu hết các SSH Client hỗ trợ.
- ed25519: là thuật toán mới được thêm vào OpenSSH. Vậy nên việc sử dụng và hỗ trợ nó chưa nhiều.
Khi chọn thuật toán thì sử dụng tham số -t
, và kích thước khóa sẽ dùng -b
. Ví dụ như sau:
{{EJS1}}
Chỉ định tên tệp
Khi tạo SSH Key, công cụ sẽ nhắc bạn tên tệp lưu trữ khóa. Tuy nhiên bạn cũng có thể chỉ định việc này thông qua lệnh -f <tên tệp>
.
Ví dụ như:
{{EJS2}}
Sao chép Public Key vào máy chủ
Để sử dụng Public key, khóa chung phải được sao chép vào máy chủ và cài đặt trong tệp authorized_keys. Việc này có thể thực hiện thông qua ssh-copy-id như sau:
{{EJS3}}
Khi khóa chung đã được cấu hình trên máy chủ, nó sẽ cho phép bất cứ người dùng nào có khóa riêng tư kết nối. Quá trình đăng nhập, khách hàng chứng minh quyền sở hữu khóa riêng tư bằng việc ký số trao đổi khóa.
Thêm khóa vào SSH Agent
ssh-agent là chương trình có thể chứa khóa riêng (Private key) của người dùng. Vì vậy cụm mật khẩu khóa riêng chỉ cần cung cấp một lần. Mỗi lần kết nối tới agent cũng có thể chuyển tiếp khi đăng nhập trên máy chủ. Từ đó cho phép các lệnh SSH trên máy chủ sẽ chạy trên máy tính người dùng.
Tạo Host Key
Ngoài khả năng tạo SSH Key, công cụ này còn có thể tạo các host key. Chúng sẽ được lưu trữ mặc định trên thư mục etc/host.
Host Key cũng chỉ là một SSH key thông thường. Mỗi máy chủ có thể có một khóa máy chủ cho mỗi thuật toán. Các khóa máy chủ hay được lưu trữ trong những tệp sau:
{{EJS4}}
Các khóa máy chủ thường được tạo tự động khi máy chủ SSH cài đặt. Nếu nó bị thay đổi, máy khách sẽ đưa ra cảnh báo về các khóa đã thay đổi đó. Các khóa thay đổi cũng nhận được báo cáo khi cố gắng thực hiện tấn công trung gian. Vậy nên việc thay đổi nên thực hiện thông qua công cụ quản lý khóa SSH hoặc chứng chỉ.
Tổng kết
Với những thông tin trên chúng tôi hy vọng bạn có thể thực hiện thành công tạo SSH Key. Việc tạo không có đối số thường khá dễ dàng và có chỉ dẫn cụ thể. Trong đó người dùng nên lựa chọn thuật toán cùng nơi lưu trữ tệp chỉ định theo nhu cầu của mình. Từ đó đảm bảo an toàn cho mỗi kết nối khi mạng không thật sự an toàn.
Nếu còn gặp bất cứ vướng mắc gì, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.