Khi cấu hình một máy chủ Linux từ xa, bạn cần lựa chọn phương thức kết nối an toàn. Mặc dù mật khẩu là một cách xác minh danh tính người dùng, nhưng nó tồn tại nhiều điểm yếu và dễ bị tấn công brute force. SSH keys – hay còn gọi là khóa SSH – thường được ưu tiên sử dụng thay cho mật khẩu, vì chúng cung cấp một phương thức kết nối bảo mật hơn tới máy chủ Linux từ xa. Là thành phần của giao thức Secure Shell mã hoá, SSH keys cho phép người dùng gửi các lệnh văn bản và cấu hình các dịch vụ của máy chủ thông qua một kết nối được bảo vệ, ngay cả khi kết nối ban đầu không an toàn.
Kế tiếp, DataOnline sẽ dẫn bạn qua các bước tạo SSH keys sử dụng OpenSSH – bộ công cụ SSH mã nguồn mở – trên macOS, Linux, cũng như trên Windows thông qua Windows Subsystem for Linux. Hướng dẫn được viết dành cho người mới làm quen với dòng lệnh, cung cấp các chỉ dẫn chi tiết về cách truy cập terminal trên máy tính cá nhân của bạn.
Yêu cầu
Để hoàn thành bài hướng dẫn này, bạn cần:
-
Một máy tính cá nhân chạy một trong các hệ điều hành sau: macOS, Linux hoặc Windows có cài đặt Windows Subsystem for Linux. Nếu bạn dùng Windows, bạn có thể tham khảo trang tài liệu của Microsoft để tải về hoặc cập nhật Windows Subsystem for Linux. Lưu ý rằng mặc dù OpenSSH có thể hoạt động trên nhiều bản phân phối Linux, bài hướng dẫn này đã được thử nghiệm với Ubuntu.
-
Một chút quen thuộc với việc làm việc trên terminal và dòng lệnh. Nếu bạn cần làm quen với terminal và dòng lệnh, hãy tham khảo bài hướng dẫn Nhập môn Dòng lệnh Linux.
Bước 1 – Hiểu về SSH Keys
SSH keys là hai chuỗi ký tự dài dùng để xác thực danh tính của người dùng khi yêu cầu truy cập vào một máy chủ từ xa. Người dùng tạo ra các khóa này trên máy tính cá nhân của họ bằng một công cụ SSH. Một khóa là private key và được lưu trên máy tính của người dùng, trong khi khóa còn lại là public key và được chia sẻ với máy chủ từ xa hoặc bất kỳ thực thể nào mà người dùng mong muốn giao tiếp một cách an toàn.
Khi người dùng yêu cầu kết nối tới máy chủ bằng SSH, máy chủ sẽ gửi một thông điệp được mã hoá bằng public key mà chỉ có thể giải mã bằng private key tương ứng. Máy tính cá nhân của người dùng sau đó sử dụng private key để cố gắng giải mã thông điệp. Nếu quá trình giải mã thành công, máy chủ sẽ cấp quyền truy cập mà không cần yêu cầu mật khẩu. Sau khi xác thực, người dùng có thể mở một phiên làm việc shell từ xa trên terminal của họ để gửi các lệnh dựa trên văn bản tới máy chủ từ xa.
Bước 2 – Mở Terminal trên máy tính của bạn
Terminal cho phép bạn tương tác với máy tính của mình thông qua các lệnh dựa trên văn bản thay vì giao diện đồ họa. Cách bạn truy cập terminal trên máy tính phụ thuộc vào loại hệ điều hành mà bạn đang sử dụng.
-
Trên máy chạy macOS, ứng dụng Terminal thường được đặt trong thư mục Utilities bên trong thư mục Applications. Bạn cũng có thể tìm thấy nó bằng cách tìm kiếm “terminal” qua Spotlight.
-
Nếu bạn đang sử dụng máy tính Linux, ứng dụng terminal mặc định của bản phân phối cũng thường nằm trong thư mục Utilities bên trong thư mục Applications. Bạn cũng có thể tìm thấy nó bằng cách tìm kiếm “terminal” qua chức năng tìm kiếm trên Desktop.
-
Nếu bạn đang sử dụng máy tính chạy Windows với Windows Subsystem for Linux, một terminal Linux sẽ tự động mở ngay sau khi cài đặt. Bạn cũng có thể tìm kiếm “Ubuntu” qua chức năng tìm kiếm trên Desktop.
Khi đã xác định được ứng dụng terminal của hệ thống, hãy mở một cửa sổ terminal mới. Terminal sẽ hiển thị tên người dùng của bạn, dấu đô la ($) và con trỏ, đây là nơi bạn bắt đầu nhập các lệnh để chỉ thị cho terminal thực hiện công việc.
Trong bước tiếp theo, bạn sẽ nhập một lệnh dựa trên văn bản để tạo một cặp SSH keys.
Bước 3 – Tạo cặp khóa với OpenSSH
Hệ điều hành macOS hoặc Linux của bạn thường đã được cài sẵn bộ công cụ OpenSSH tiêu chuẩn, bao gồm tiện ích ssh-keygen mà bạn sẽ dùng để tạo cặp khóa SSH.
Nhập lệnh sau vào terminal:
ssh-keygen
Sau đó, bạn sẽ được nhắc chọn vị trí lưu các khóa. Theo mặc định, các khóa được lưu trong thư mục ~/.ssh với tên id_rsa cho private key và id_rsa.pub cho public key. Sử dụng vị trí mặc định cho phép SSH client tự động tìm thấy các khóa khi xác thực, vì vậy chúng tôi khuyên bạn nên chấp nhận các tùy chọn mặc định. Để làm điều đó, hãy nhấn ENTER.
Output
Generating public/private rsa key pair. Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
Cảnh báo: Nếu bạn đã tạo cặp khóa trước đó, bạn sẽ được nhắc xác nhận rằng bạn thực sự muốn ghi đè lên khóa hiện có:
Output
Nếu bạn chọn ghi đè lên khóa hiện có, bạn sẽ không thể xác thực bằng khóa cũ nữa. Chọn “yes” là một quá trình hủy hoại không thể phục hồi.
Nếu bạn chắc chắn muốn ghi đè, hãy nhấn Y và sau đó ENTER.
Nếu bạn chọn vị trí mặc định, public key sẽ nằm ở /home/sammy/.ssh/id_rsa.pub và private key ở /home/sammy/.ssh/id_rsa (lưu ý: trong đường dẫn, sammy sẽ được thay bằng tên người dùng của bạn).
Sau khi chọn vị trí, bạn sẽ được nhắc nhập một passphrase tùy chọn để mã hoá file private key trên đĩa. Nếu nhập passphrase, bạn sẽ phải cung cấp nó mỗi khi sử dụng khóa (trừ khi bạn dùng phần mềm SSH agent lưu trữ khóa đã được giải mã). Chúng tôi khuyến khích sử dụng passphrase, nhưng bạn có thể nhấn ENTER để bỏ qua.
Output
Sau lời nhắc cuối cùng, hệ thống sẽ tạo ra cặp khóa SSH.
Output
Bây giờ, bạn đã có public key và private key để xác thực.
Kết luận
Chúc mừng, bạn đã tạo thành công cặp khóa SSH! Những khóa này không chỉ giúp kết nối an toàn tới máy chủ từ xa mà còn là thành phần thiết yếu cho việc thiết lập máy chủ Ubuntu trên DataOnline trong chuyên mục Giới thiệu về điện toán đám mây.
Để mở rộng kiến thức và cải thiện kỹ năng làm việc với SSH, hãy tham khảo bài hướng dẫn “SSH Essentials: Làm việc với các máy chủ, client và keys SSH” để tìm hiểu sâu hơn về các phương pháp bảo mật và quản trị SSH.