Hướng dẫn dùng SSH key với Contabo cho Linux và Window

SSH key là gì?

Được dùng cho máy chủ Linux được bảo mật theo mặc định bằng mật khẩu. Tuy nhiên, kiểu xác thực này không phải là lý tưởng để bảo mật vì máy chủ của bạn có thể dễ bị tấn công brute force (tìm hiểu thêm) hoặc dictionary attacks (tìm hiểu thêm). SSH Keys giống như một “thẻ khóa” để truy cập vào máy chủ của bạn mà không cần mật khẩu.

Trong hướng dẫn này, mình sẽ chỉ cho bạn cách thay thế xác thực mật khẩu bằng xác thực dựa trên khóa SSH. Tôi sẽ sử dụng dịch vụ Contabo VPS trong hướng dẫn này, nhưng cách thực hiện này có thể áp dụng cho mọi máy chủ ảo từ bất kỳ nhà cung cấp nào.

Video hướng dẫn

Nguồn từ Contabo

Mục lục

SSH Keys với mật khẩu

Như đã nêu trong phần giới thiệu của bài viết này, vấn đề với mật khẩu là lỗ hổng của chúng trước các cuộc tấn công brute force hoặc dictionary attacks. Mặc dù bảo mật của mật khẩu có thể được mở rộng bằng cách sử dụng mật khẩu dài hơn hoặc các ký tự và số đặc biệt, nguy cơ bị tấn công brute-force vẫn còn đó. Trong cuộc tấn công brute-force, một chương trình tự động tạo mật khẩu ngẫu nhiên và cố gắng đăng nhập vào máy chủ của bạn. Tùy thuộc vào bản thân chương trình và hiệu suất của máy mà chương trình này đang chạy một cuộc tấn công như vậy có thể thành công ngay lập tức.

Mặt khác, các khóa SSH được tạo bằng cách sử dụng Hệ thống mật mã RSA. Một hệ thống mật mã không đối xứng. Hai khóa, khóa công khai và khóa cá nhân được tạo. Phương pháp được sử dụng để tạo ra các khóa phức tạp đến mức không thể tấn công bẻ khóa nó.

Giải thích xác thực khóa SSH:

1. Một cặp Khóa SSH, bao gồm khóa công khai và khóa riêng tư được tạo.

2. Khóa công khai được lưu trên máy chủ của bạn; khóa cá nhân được lưu trên máy tính của bạn.

3. Nếu bây giờ tôi cố gắng đăng nhập vào máy chủ của mình, máy chủ sẽ tạo một chuỗi ngẫu nhiên và mã hóa nó bằng khóa công khai. Chuỗi mã hóa này chỉ có thể được giải mã bằng khóa cá nhân.

4. Máy chủ gửi chuỗi mã hóa này đến máy tính của bạn. Máy tính của bạn sẽ giải mã nó bằng khóa riêng và gửi chuỗi đã giải mã trở lại máy chủ. Nếu chuỗi được giải mã từ máy tính của bạn khớp với chuỗi gốc từ máy chủ, bạn được ủy quyền và có quyền truy cập vào máy chủ.

Cách tạo khóa SSH:

Linux

Nếu máy tính cục bộ của bạn chạy Linux, hãy mở một thiết bị đầu cuối.

Nhập lệnh sau để tạo một cặp khóa:

ssh-keygen -t rsa 

Tùy thuộc vào phiên bản Linux của bạn, bạn có thể được nhắc chọn tên tệp và đích nơi tệp sẽ được lưu.

Đường dẫn mặc định mà các khóa được lưu nó:

/root/.ssh

Trong khi id_rsakhóa cá nhân của bạn, id_rsa.pubkhóa công khai của bạn.

Windows

Nếu máy tính cục bộ của bạn chạy Windows, chúng tôi khuyên bạn nên cài đặt chương trình miễn phí PuTTY, bao gồm PuTTYgen.

Bạn có thể tải PuTTY tại đây: https://www.puttygen.com/download-putty

Mở thanh tìm kiếm của Windows và tìm kiếm PuTTYgen.

Sau khi mở nó, màn hình này sẽ xuất hiện:

Chỉ cần nhấp vào “Tạo (Generate)” và di chuyển chuột qua trường trống. Các khóa của bạn sẽ được tạo ngay bây giờ.

Giải thích các nhận xét chính (tùy chọn)

Nếu bạn muốn, bạn có thể chỉ định một nhận xét chính. Nhận xét này sẽ được tích hợp vào khóa công khai cũng như khóa riêng tư của bạn. Nếu bây giờ bạn tự đăng nhập vào máy chủ bằng khóa của mình, nhận xét về khóa tương tự như tên khóa của bạn sẽ được hiển thị trên bảng điều khiển.

Giải thích cụm mật khẩu chính (tùy chọn, khuyến nghị)

Để tăng tính bảo mật cho khóa cá nhân, bạn có thể gán một cụm mật khẩu khóa. Điều này sẽ mã hóa cục bộ khóa cá nhân của bạn. Nếu bây giờ bạn cố gắng kết nối với máy chủ của mình bằng khóa cá nhân, bạn sẽ được nhắc nhập cụm mật khẩu khóa của mình. Sự khác biệt giữa việc sử dụng mật khẩu thông thường để kết nối với máy chủ của bạn hoặc sử dụng khóa cá nhân được bảo mật bằng cụm mật khẩu là cụm mật khẩu sẽ không được chuyển đến máy chủ của bạn. Cụm mật khẩu chỉ được sử dụng để mã hóa / giải mã cục bộ khóa cá nhân của bạn. Với phương pháp này, không thành vấn đề nếu ai đó có quyền truy cập vào khóa riêng tư của bạn vì họ cũng cần cụm mật khẩu khóa của bạn để kết nối với máy chủ của bạn.

Để lưu khóa công khai, bạn có thể sao chép toàn bộ văn bản của hộp trên cùng hoặc nhấp vào “Lưu khóa công khai (Save public key)”, sau đó chọn vị trí mà khóa sẽ được lưu.

Để lưu khóa cá nhân, hãy nhấp vào “Lưu khóa cá nhân (Save private key)” và chọn vị trí mà khóa sẽ được lưu.

Tải lên khóa công khai SSH lên máy chủ

Sau khi cặp khóa được tạo, bạn cần tải khóa công khai lên máy chủ của mình. Điều này có thể được thực hiện bằng cách sử dụng chương trình FTP hoặc bằng bảng điều khiển.

via FTP

Nếu bạn muốn tải lên khóa công khai của mình bằng FTP, hãy khởi động chương trình FTP và kết nối với máy chủ của bạn dưới dạng root. Tạo thư mục sau trong thư mục gốc:

.ssh

Bây giờ, hãy tạo tệp văn bản ủy quyền (authorized_keys) dạng txt file trong thư mục này và dán toàn bộ khóa công khai vào đó. Bây giờ hãy lưu tệp.

via Console

Đăng nhập chính mình qua SSH với tư cách người chủ. Với lệnh này, bạn có thể tạo thư mục phù hợp và chuyển sang thư mục đó cùng một lúc:


mkdir /root/.ssh && cd /root/.ssh

Bây giờ, hãy tạo và mở tệp văn bản Authorised_keys bằng lệnh này:

nano authorized_key

Dán toàn bộ khóa công khai của bạn và lưu tệp bằng cách nhấn [CTRL + O]. Để thoát khỏi trình chỉnh sửa, hãy sử dụng [CTRL + X]

Cách sử dụng Khóa cá nhân SSH của bạn với PuTTY:

Sau khi bạn đã tạo một cặp khóa bao gồm khóa riêng tư và khóa công khai và sau khi tải khóa công khai lên máy chủ, bạn cần chèn khóa cá nhân của mình vào PuTTY.

Để làm như vậy, hãy mở PuTTY.

Ở phía bên trái, bạn sẽ tìm thấy một danh sách với nhiều danh mục khác nhau. Trong Kết nối, bạn sẽ tìm thấy SSH của điểm phụ có thể được mở rộng bằng cách nhấp vào biểu tượng dấu cộng nhỏ [+]. Bây giờ hãy nhấp vào Auth. Một cửa sổ sẽ xuất hiện ở phía bên phải. Nhấp vào Duyệt qua… và chọn khóa cá nhân của bạn.

Bây giờ cuộn lên trên danh sách bên trái và nhấp vào Phiên (Section).

Nhập Địa chỉ IP của máy chủ của bạn và chọn tên hồ sơ trong trường Phiên đã lưu.

Lưu hồ sơ của bạn bằng cách nhấp vào nút Lưu.

Bây giờ bạn đã tạo hồ sơ trong PuTTY bằng khóa riêng tư của mình.

Cách sử dụng Khóa cá nhân SSH của bạn với Pageant:

Thay thế để chèn Khóa riêng của bạn vào PuTTY, bạn có thể sử dụng Pageant.

Pageant là một SSH-Agent, đi cùng với PuTTY.

Với chương trình này, việc sử dụng Khóa riêng để kết nối với máy chủ của bạn thậm chí còn dễ dàng hơn.

Nếu sử dụng Pageant, bạn không cần phải nhập lại Cụm mật khẩu của mình nhiều lần, trong trường hợp bạn đã bảo mật Khóa riêng của mình bằng Cụm mật khẩu.

Để bắt đầu, hãy tìm kiếm Pageant trong Thanh tìm kiếm của Windows. Sau khi thực hiện chương trình này, nó sẽ xuất hiện trong Windows Systemtray:

Để nhập Khóa riêng vào Pageant, hãy nhấp chuột phải vào Biểu tượng Pagent và nhấp vào “Thêm khóa”.

Trình khám phá tệp sẽ mở và bạn cần chọn Khóa cá nhân của mình. Nếu bạn quyết định bảo mật Khóa cá nhân của mình bằng Cụm mật khẩu, bạn sẽ được yêu cầu nhập khóa đó.

Giờ đây, bạn có thể chỉ cần đăng nhập vào Máy chủ của mình mà không cần được nhắc nhập Cụm mật khẩu mỗi khi bạn bắt đầu kết nối SSH.

Lưu ý: Bạn cần nhập lại Khóa cá nhân sau khi khởi động lại máy tính cục bộ của mình.

Kiểm tra xác thực khóa SSH và vô hiệu hóa xác thực mật khẩu:

Sau khi bạn đã tạo thành công một cặp khóa, hãy tải khóa công khai của bạn lên máy chủ và tạo PuTTY-Profile bằng khóa cá nhân của bạn, bây giờ là lúc để kiểm tra xem phương pháp đăng nhập mới của bạn có hoạt động hay không.

Kiểm tra xác thực khóa SSH

Để kiểm tra xem phương thức xác thực mới của bạn có hoạt động hay không, chỉ cần đăng nhập vào máy chủ của bạn bằng cách sử dụng hồ sơ PuTTY mà bạn vừa tạo. Sau khi nhấp đúp vào hồ sơ, một bảng điều khiển sẽ mở ra nhắc bạn nhập tên người dùng của mình, tên người dùng thường là root.

Sau khi nhập tên người dùng và xác nhận bằng cách nhấn [Enter], bạn sẽ đăng nhập được. Ngoài ra, thông báo sau sẽ xuất hiện trong quá trình đăng nhập: “Authenticating with public key <key comment>”.

Vô hiệu hóa xác thực mật khẩu

Lý do đằng sau việc chọn xác thực ssh-key làm phương thức đăng nhập của bạn là bảo mật máy chủ. Do đó, sẽ hợp lý khi tắt xác thực mật khẩu ngay bây giờ.

Để làm như vậy, hãy mở sshd_config bằng lệnh này:


nano /etc/ssh/sshd_config

Bây giờ, hãy đặt các giá trị sau thành “không”:

ChallengeResponseAuthentication

PasswordAuthentication

UsePAM

Để tránh cuộn qua toàn bộ cấu hình để tìm các giá trị cần thay đổi, bạn có thể mở trường tìm kiếm bằng cách nhấn [CTRL + W]. Nhập tên của giá trị và nhấn enter.

Nếu xảy ra trường hợp một số giá trị được nhận xét bằng dấu # ở phía trước nó, chỉ cần xóa nó.

Lưu các thay đổi của bạn bằng [CTRL + O] và đóng trình chỉnh sửa bằng [CTRL + X]

Xóa xác thực khóa SSH và bật lại xác thực mật khẩu:

Nếu bạn muốn quay lại xác thực mật khẩu, tất cả những gì bạn cần làm là đặt các giá trị trong sshd_config trở lại “yes”.

Sau đó, xóa thư mục .ssh và nội dung của nó với:


rm -R /root/.ssh

Khởi động lại dịch vụ ssh bằng lệnh này:


systemctl restart ssh

Đã đăng trong Linux, VPS, Hosting, Window, WordPress.