Trang chủ / Chuyên đề / Cách cài đặt SSH Key trên Centos 8, đăng nhập không cần password!
Chủ Nhật, 27/09/2020 | 21:50 GMT+7

Cách cài đặt SSH Key trên Centos 8, đăng nhập không cần password!

Đăng nhập Centos không cần Password, tiện lợi và bảo mật, đây là phương pháp chuẩn được khuyến nghị bạn nên áp dụng! SSH hoặc shell, là một giao thức được mã hóa sử dụng để quản trị và giao tiếp với các máy chủ. Trong hướng dẫn này, ta sẽ tập trung vào việc thiết lập khóa SSH cho máy chủ CentOS 8. Khóa SSH cung cấp một phương pháp đăng nhập đơn giản, an toàn vào máy chủ và được khuyên nên sử dụng cách này.

Bước 1 - Tạo Cặp khóa RSA

Bước đầu tiên là tạo một cặp khóa trên máy khách (thường là máy tính cục bộ ):

  • ssh-keygen

Bạn có thể cài OpenSSL trên Linux, hay OpenSSH trên Windows, để có công cụ lệnh về SSH, sau khi cài sẽ có các file thực thi như trên.

Theo mặc định, ssh-keygen sẽ tạo một cặp khóa RSA 2048 bit, đủ an toàn cho hầu hết các trường hợp sử dụng (bạn có thể tùy chọn chuyển vào cờ -b 4096 để tạo khóa 4096 bit lớn hơn nếu muốn bảo mật cao hơn).

Kết quả:

Output
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):

Nhấn ENTER để lưu cặp khóa vào thư mục con .ssh/ trong thư mục chính hoặc chỉ định một đường dẫn thay thế.

Nếu trước đó bạn đã tạo cặp khóa SSH, bạn có thể thấy lời nhắc sau:

Output
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?

Nếu bạn chọn ghi đè khóa trên đĩa, sẽ không thể xác thực bằng khóa trước đó nữa. Hãy cẩn thận khi chọn có, vì không phục hồi được khóa cũ trước đó.

Sau đó, bạn sẽ thấy lời nhắc sau:

Output
Enter passphrase (empty for no passphrase):

Tại đây, bạn có thể tùy chọn nhập một cụm mật khẩu an toàn, để bảo vệ khóa, cũng nên sử dụng. Cụm mật khẩu bổ sung thêm một lớp bảo mật cho khóa để ngăn người dùng trái phép đăng nhập.

Sau đó, bạn sẽ thấy kết quả sau:

Output
Your identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+

Bây giờ bạn có một khóa công khai và riêng tư có thể sử dụng để xác thực. Bước tiếp theo là lấy khóa công khai vào máy chủ để bạn có thể sử dụng xác thực, dựa trên khóa SSH để đăng nhập.

Bước 2 - Sao chép khóa công khai vào máy chủ CentOS

Cách nhanh nhất để sao chép khóa công khai vào máy chủ CentOS là sử dụng tiện ích có tên ssh-copy-id . Phương pháp này rất được khuyến khích nếu có. Nếu bạn không có sẵn ssh-copy-id trên máy khách , bạn có thể sử dụng một trong hai phương pháp thay thế sau đây (sao chép qua SSH dựa trên mật khẩu hoặc sao chép khóa theo cách thủ công).

Sao chép Khóa công khai bằng ssh-copy-id

Công cụ ssh-copy-id thường được cài mặc định hệ điều hành Linux. Bạn cần quyền truy cập SSH dựa trên mật khẩu vào máy chủ để thực hiện lệnh.

Lệnh sau, với username là tài khoản ssh, remote_host là ip-domain máy chủ:

  • ssh-copy-id username@remote_host

Bạn có thể thấy thông báo sau:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Nghĩa là máy tính cục bộ cần xác nhận máy chủ là hợp lệ. Điều này sẽ xảy ra lần đầu tiên bạn kết nối với máy chủ mới. Nhập yes và nhấn ENTER để tiếp tục.

Tiếp theo, tiện ích sẽ quét tài khoản cục bộ để tìm khóa id_rsa.pub mà ta đã tạo trước đó. Khi tìm thấy khóa, nó sẽ nhắc bạn nhập mật khẩu của tài khoản người dùng:

Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@203.0.113.1's password:

Nhập mật khẩu và nhấn ENTER . Tiện ích sẽ kết nối với tài khoản trên máy chủ từ xa bằng mật khẩu bạn đã cung cấp. Sau đó nó sẽ sao chép nội dung ~/.ssh/id_rsa.pub chìa khóa vào tài khoản từ xa ~/.ssh/authorized_keys tập tin.

Bạn sẽ thấy kết quả sau:

Output
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.

Tại thời điểm này, khóa id_rsa.pub đã được tải lên tài khoản từ xa. Bạn có thể tiếp tục sang Bước 3 .

Sao chép khóa công khai bằng SSH

Nếu bạn không có ssh-copy-id , nhưng bạn có quyền truy cập SSH dựa trên mật khẩu vào tài khoản trên máy chủ , bạn có thể tải lên khóa bằng phương pháp SSH thông thường hơn.

Ta có thể thực hiện việc này bằng cách sử dụng lệnh cat để đọc nội dung của khóa SSH công khai trên máy tính cục bộ của ta và chuyển thông qua kết nối SSH tới máy chủ từ xa.

Mặt khác, ta có thể đảm bảo rằng ~/.ssh tồn tại và có các quyền chính xác trong tài khoản mà ta đang sử dụng.

Sau đó, ta có thể xuất nội dung mà ta đã đưa vào một tệp có tên gọi là authorized_keys trong thư mục này. ta sẽ sử dụng biểu tượng >> chuyển hướng để nối nội dung thay vì ghi đè lên. Điều này sẽ cho phép ta thêm khóa mà không phá hủy bất kỳ khóa nào đã thêm trước đó.

Lệnh đầy đủ trông như thế này:

  • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Bạn có thể thấy thông báo sau:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Điều này có nghĩa là máy tính cục bộ không nhận ra máy chủ từ xa. Điều này sẽ xảy ra lần đầu tiên bạn kết nối với máy chủ mới. Nhập yes và nhấn ENTER để tiếp tục.

Sau đó, bạn sẽ được nhắc nhập mật khẩu tài khoản người dùng từ xa:

Output
username@203.0.113.1's password:

Sau khi nhập mật khẩu, nội dung khóa id_rsa.pub sẽ được sao chép vào cuối tệp authorized_keys id_rsa.pub khóa của tài khoản người dùng từ xa. Tiếp tục sang Bước 3 nếu việc này thành công.

Sao chép khóa công khai theo cách thủ công

Nếu bạn không có quyền truy cập SSH dựa trên mật khẩu vào máy chủ , bạn sẽ phải hoàn tất quy trình trên theo cách thủ công.

ta sẽ nối thủ công nội dung tệp id_rsa.pub vào tệp ~/.ssh/authorized_keys trên máy tính từ xa .

Để hiển thị nội dung của khóa id_rsa.pub , hãy nhập mã này vào máy tính cục bộ :

  • cat ~/.ssh/id_rsa.pub

Bạn sẽ thấy nội dung của khóa, trông giống như sau:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host

Đăng nhập vào máy chủ từ xa bằng bất kỳ phương pháp nào bạn có sẵn.

Khi bạn có quyền truy cập vào tài khoản trên máy chủ từ xa, bạn nên đảm bảo rằng ~/.ssh tồn tại. Lệnh này sẽ tạo thư mục nếu cần hoặc không làm gì nếu nó đã tồn tại:

  • mkdir -p ~/.ssh

Bây giờ, bạn có thể tạo hoặc sửa đổi các authorized_keys tập tin trong thư mục này. Bạn có thể thêm nội dung của tệp id_rsa.pub vào cuối tệp authorized_keys , tạo nó nếu cần, sử dụng lệnh sau:

  • echo public_key_string >> ~/.ssh/authorized_keys

Trong lệnh trên, thay thế public_key_string bằng đầu ra từ lệnh cat ~/.ssh/id_rsa.pub mà bạn đã thực thi trên hệ thống cục bộ . Nó phải bắt đầu bằng ssh-rsa AAAA...

Cuối cùng, ta sẽ đảm bảo rằng các ~/.ssh thư mục và authorized_keys tập tin có quyền thích hợp thiết lập:

  • chmod -R go= ~/.ssh

Thao tác này sẽ xóa một cách đệ quy tất cả các quyền “group” và “other” cho ~/.ssh/ .

Nếu bạn đang sử dụng tài khoản root để thiết lập khóa cho tài khoản người dùng, thì điều quan trọng là ~/.ssh thuộc về người dùng chứ không phải root :

  • chown -R sammy:sammy ~/.ssh

Trong hướng dẫn này, người dùng của ta có tên là sammy, bạn nên thay thế tên người dùng thích hợp vào lệnh trên.

Bây giờ ta có thể thử xác thực dựa trên khóa với máy chủ CentOS của ta.

Bước 3 - Đăng nhập vào máy chủ CentOS bằng khóa SSH

Nếu đã hoàn thành thành công một trong các quy trình trên, bây giờ bạn có thể đăng nhập vào máy chủ từ xa mà không cần mật khẩu của tài khoản từ xa.

Quy trình ban đầu giống như với xác thực dựa trên mật khẩu:

  • ssh username@remote_host

Nếu đây là lần đầu tiên kết nối với máy chủ này (nếu bạn đã sử dụng phương pháp cuối cùng ở trên), bạn có thể thấy như sau:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Điều này có nghĩa là máy tính cục bộ không nhận ra máy chủ từ xa. Nhập yes và sau đó nhấn ENTER để tiếp tục.

Nếu không cung cấp cụm mật khẩu khi tạo cặp khóa ở bước 1, bạn sẽ được đăng nhập ngay lập tức. Nếu đã cung cấp một cụm mật khẩu, bạn sẽ được nhắc nhập nó ngay bây giờ. Sau khi xác thực, một phiên trình bao mới sẽ mở cho bạn với tài khoản đã định cấu hình trên máy chủ CentOS.

Nếu xác thực dựa trên khóa thành công, hãy tiếp tục tìm hiểu cách bảo mật hơn nữa hệ thống bằng cách tắt xác thực dựa trên mật khẩu của máy chủ SSH .

Bước 4 - Tắt xác thực mật khẩu trên máy chủ

Nếu có thể đăng nhập vào tài khoản bằng SSH mà không cần mật khẩu, bạn đã định cấu hình thành công xác thực dựa trên khóa SSH cho tài khoản . Tuy nhiên, cơ chế xác thực dựa trên mật khẩu vẫn đang hoạt động, có nghĩa là máy chủ vẫn bị tấn công brute-force.

Trước khi hoàn thành các bước trong phần này, hãy đảm bảo rằng bạn đã định cấu hình xác thực dựa trên khóa SSH cho tài khoản root trên máy chủ này hoặc tốt hơn là bạn đã định cấu hình xác thực dựa trên khóa SSH cho tài khoản không phải root trên máy chủ này. máy chủ với đặc quyền sudo . Bước này sẽ khóa các thông tin đăng nhập dựa trên mật khẩu, vì vậy đảm bảo rằng bạn vẫn có thể có quyền truy cập quản trị là rất quan trọng.

Khi bạn đã xác nhận rằng tài khoản từ xa có đặc quyền quản trị, hãy đăng nhập vào máy chủ từ xa bằng khóa SSH, với tài khoản root hoặc bằng tài khoản có đặc quyền sudo . Sau đó, mở tệp cấu hình SSH daemon:

  • sudo vi /etc/ssh/sshd_config

Bên trong tệp, hãy tìm kiếm một lệnh có tên là PasswordAuthentication , nó có thể được comment bằng #. Nhấn i để đưa vi vào chế độ chèn, sau đó bỏ comment # và đặt giá trị thành no . Điều này sẽ vô hiệu hóa khả năng đăng nhập qua SSH bằng mật khẩu:

/ etc / ssh / sshd_config
...
PasswordAuthentication no
...

Khi thực hiện xong các thay đổi, hãy nhấn ESC và sau đó :wq để ghi các thay đổi vào tệp và thoát. Để thực sự triển khai những thay đổi này, chúng ta cần khởi động lại dịch vụ sshd :

  • sudo systemctl restart sshd

Để phòng ngừa, hãy mở cửa sổ đầu cuối mới và kiểm tra xem dịch vụ SSH có hoạt động chính xác hay không trước khi đóng phiên hiện tại:

  • ssh username@remote_host

Khi đã xác minh dịch vụ SSH vẫn hoạt động bình thường, bạn có thể đóng tất cả các phiên máy chủ hiện tại một cách an toàn.

Daemon SSH trên máy chủ CentOS hiện chỉ phản hồi các khóa SSH. Xác thực dựa trên mật khẩu đã được vô hiệu hóa thành công.

Kết luận

Bây giờ bạn có xác thực dựa trên khóa SSH được cấu hình trên máy chủ, cho phép bạn đăng nhập mà không cần cung cấp mật khẩu tài khoản, thật là tiện lợi và bảo mật.

Nếu bạn muốn tìm hiểu thêm về cách làm việc với SSH, hãy xem Hướng dẫn Cơ bản về SSH .



Các tin trước

Cài đặt bảo mật cơ bản cho Centos 8 2020-09-27

Lập lịch với Crontab trên Centos 8 2020-09-27

Bảo mật Apache với Lets Encrypt trên Centos 8 2020-09-19

Tạo chứng chỉ số tự ký trên Apache Centos 8 (self-signed-ssl-certificate) 2020-09-19

Tối ưu SQL với Index, FullText Search 2020-08-10

Bảo mật Apache với Lets Encrypt 2020-08-06

Cài đặt Node.js trên Ubuntu 18.04 2020-08-06

Thực hành bài LAB Toàn tập Select SQL Query 2020-08-05

Cài đặt XAMPP Trên Hệ điều hành Windows 2020-08-05

Toàn tập SQL - Bài tập Lệnh SELECT Database Toàn tập - tinh gọn nhất 2020-08-03