Cách thiết lập SSH Key trên CentOS – Hướng dẫn A-Z ai cũng làm được trong 2′

cach setup ssh key 1

Khi làm việc với một máy chủ CentOS, khả năng cao bạn sẽ dành phần lớn thời gian trong phiên làm việc terminal được kết nối qua SSH. Trong hướng dẫn này, chúng ta sẽ tập trung vào việc thiết lập SSH keys CentOS. SSH keys mang lại một phương pháp đăng nhập trực tiếp và an toàn vào máy chủ, được khuyến nghị sử dụng cho mọi người dùng.

Cách Cài Đặt SSH Keys Trên CentOS

  1. Tạo Cặp Khóa RSA
  2. Sao Chép Khóa Công Khai Lên Máy Chủ CentOS
  3. Đăng Nhập Vào Máy Chủ CentOS Bằng SSH Keys
  4. Vô Hiệu Hóa Xác Thực Bằng Mật Khẩu Trên Máy Chủ

Bước 1 — Tạo Cặp Khóa RSA

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

ssh-keygen

Lưu ý: Theo mặc định, lệnh ssh-keygen sẽ tạo ra 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ể thêm tùy chọn -b 4096 để tạo ra khóa 4096-bit nếu cần bảo mật cao hơn.

Sau khi nhập lệnh, bạn sẽ thấy thông báo sau:

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 cá nhân, hoặc nhập đường dẫn khác nếu bạn muốn lưu ở vị trí khác.

Nếu trước đó bạn đã tạo cặp SSH key, có thể bạn sẽ thấy thông báo:

Output:

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

Nếu bạn chọn ghi đè lên khóa đã có, thì bạn sẽ không thể sử dụng khóa cũ để xác thực nữa. Hãy cân nhắc kỹ trước khi trả lời “yes” vì quá trình này sẽ xóa bỏ khóa cũ không thể khôi phục.

Sau đó, bạn sẽ được yêu cầu:

Output:

Enter passphrase (empty for no passphrase):

Tại đây, bạn có thể (nên) nhập một cụm mật khẩu an toàn để tăng thêm lớp bảo vệ cho khóa của mình, giúp ngăn chặn truy cập trái phép.

Tiếp theo, bạn sẽ thấy kết quả như 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 cặp Public KeyPrivate Key để sử dụng cho việc xác thực. Bước tiếp theo là đưa khóa công khai lên máy chủ của bạn để có thể đăng nhập bằng SSH key.

 

SSH key centos

Bước 2 — Sao chép khóa công khai lên máy chủ CentOS

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

1. Sao chép Public Key bằng ssh-copy-id

Tiện ích ssh-copy-id thường được cài đặt sẵn trên nhiều hệ điều hành, vì vậy khả năng cao bạn đã có nó. Để phương pháp này hoạt động, bạn cần có quyền truy cập SSH bằng mật khẩu vào máy chủ.

Chỉ cần chỉ định máy chủ từ xa và tài khoản người dùng mà bạn có thể đăng nhập bằng mật khẩu. Đây sẽ là tài khoản mà khóa SSH công khai của bạn được sao chép vào:

ssh-copy-id username@remote_host

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

(Các liên kết tham khảo đã được liệt kê trong tài liệu gốc)

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ủa bạn chưa nhận diện được máy chủ từ xa. Đây là lần đầu bạn kết nối với host mới, hãy gõ yes và nhấn ENTER để tiếp tục.

Tiếp theo, tiện ích sẽ quét trong tài khoản cục bộ để tìm khóa id_rsa.pub mà bạn đã tạo ở bước 1 và yêu cầu nhập mật khẩu của tài khoản từ xa:

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 (không hiển thị khi gõ) và nhấn ENTER. Tiện ích sẽ đăng nhập vào tài khoản từ xa, sau đó sao chép nội dung của khóa công khai (~/.ssh/id_rsa.pub) vào tập tin ~/.ssh/authorized_keys trên máy chủ.

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

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.

2. Sao chép Public Key bằng SSH (nếu không có ssh-copy-id)

Nếu bạn không có ssh-copy-id nhưng vẫn có quyền truy cập SSH bằng mật khẩu, bạn có thể tải khóa lên theo cách thông thường.

(Tham khảo các liên kết tương tự như trong phần trên)

Thực hiện theo các bước sau:

  • Sử dụng lệnh cat để đọc nội dung của khóa công khai trên máy cục bộ và chuyển nó qua kết nối SSH tới máy chủ.
  • Trên máy chủ, đảm bảo rằng thư mục ~/.ssh tồn tại và có quyền truy cập đúng.
  • Dùng lệnh chuyển hướng >> để thêm nội dung vào tập tin authorized_keys (không ghi đè nội dung cũ).

Lệnh đầy đủ như sau:

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 sẽ thấy thông báo tương tự:

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

Sau đó, bạn sẽ được yêu cầu nhập mật khẩu tài khoản từ xa:

Output:

username@203.0.113.1's password:

Khi nhập mật khẩu, nội dung của khóa id_rsa.pub sẽ được thêm vào cuối tập tin authorized_keys của tài khoản trên máy chủ. Nếu quá trình này thành công, bạn chuyển sang bước 3.

3. Sao Chép Public Key Thủ Công

Nếu bạn không có quyền truy cập SSH bằng mật khẩu, bạn sẽ phải thực hiện thủ công.

Trên máy cục bộ, hiển thị nội dung của khóa công khai bằng lệnh:

cat ~/.ssh/id_rsa.pub

Bạn sẽ thấy một nội dung khóa có dạ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ủ theo phương thức bạn có.

Sau khi đăng nhập, đảm bảo rằng thư mục ~/.ssh tồn tại. Nếu chưa có, tạo bằng lệnh:

mkdir -p ~/.ssh

Thêm nội dung của khóa công khai vào tập tin authorized_keys bằng lệnh:

echo public_key_string >> ~/.ssh/authorized_keys

(Thay public_key_string bằng nội dung thực tế của khóa từ lệnh cat ~/.ssh/id_rsa.pub – nội dung bắt đầu bằng ssh-rsa AAAA...)

Cuối cùng, thiết lập quyền truy cập cho thư mục và tập tin:

chmod -R go= ~/.ssh

Lệnh này sẽ loại bỏ mọi quyền “group” và “other” đối với thư mục ~/.ssh.

Nếu bạn đang sử dụng tài khoản root để cài đặt khóa cho tài khoản người dùng, hãy đảm bảo thư mục ~/.ssh thuộc về tài khoản đó, không phải root:

chown -R sammy:sammy ~/.ssh

(Trong ví dụ này, tài khoản được sử dụng là sammy – hãy thay thế bằng tên người dùng phù hợp.)

Sau khi hoàn tất, bạn đã sẵn sàng để thử đăng nhập bằng phương thức xác thực bằng SSH key.

Bước 3 — Đăng Nhập Vào Máy Chủ CentOS Bằng SSH Keys

Nếu bạn đã hoàn thành thành công một trong các phương pháp ở trên, giờ đây bạn có thể đăng nhập vào máy chủ từ xa mà không cần sử dụng mật khẩu.

Quá trình đăng nhập ban đầu vẫn giống như đăng nhập qua mật khẩu:

ssh username@remote_host

Nếu đây là lần đầu bạn kết nối với máy chủ (đặc biệt là khi sử dụng phương pháp sao chép thủ công), bạn có thể nhận được thông báo:

(Các liên kết tham khảo đã được liệt kê trong tài liệu gốc)

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 nghĩa là máy tính của bạn chưa nhận diện máy chủ từ xa. Gõ yes và nhấn ENTER để tiếp tục.

  • Nếu bạn không nhập mật khẩu (do đã để trống passphrase khi tạo key), bạn sẽ được đăng nhập ngay lập tức.
  • Nếu bạn đã thiết lập passphrase, hệ thống sẽ yêu cầu nhập passphrase trước khi cho phép truy cập.

Sau khi xác thực, một phiên shell mới sẽ được mở với tài khoản đã cấu hình trên máy chủ CentOS.

Nếu đăng nhập bằng SSH key thành công, bạn hãy chuyển sang bước tiếp theo để tăng cường bảo mật hệ thống.

Bước 4 — Vô Hiệu Hóa Xác Thực Bằng Mật Khẩu Trên Máy Chủ

Nếu bạn đã đăng nhập thành công bằng SSH key, điều đó có nghĩa là bạn đã cấu hình xác thực không cần mật khẩu thành công. Tuy nhiên, cơ chế xác thực bằng mật khẩu vẫn còn kích hoạt, khiến máy chủ dễ bị tấn công brute-force.

Trước khi tiến hành bước này, hãy đảm bảo rằng:

  • Bạn đã cấu hình xác thực bằng SSH key cho tài khoản root trên máy chủ, hoặc
  • Ưu tiên, bạn đã cấu hình SSH key cho một tài khoản không phải root có quyền sudo.

Bước này sẽ khóa hoàn toàn đăng nhập qua mật khẩu, vì vậy hãy đảm bảo bạn vẫn có quyền truy cập quản trị từ xa.

Sau khi xác nhận tài khoản từ xa của bạn có quyền quản trị, đăng nhập vào máy chủ bằng SSH key (dù là dưới tài khoản root hoặc tài khoản có quyền sudo), sau đó mở tập tin cấu hình của SSH daemon:

sudo vi /etc/ssh/sshd_config

(Các liên kết tham khảo đã được liệt kê trong tài liệu gốc)

Trong tập tin này, tìm dòng có chỉ thị PasswordAuthentication. Dòng này có thể bị comment (có ký hiệu #). Nhấn i để vào chế độ chèn, sau đó bỏ comment và thay đổi giá trị thành no:

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

Sau khi chỉnh sửa xong, nhấn ESC và nhập :wq để lưu và thoát. Để áp dụng thay đổi, khởi động lại dịch vụ sshd:

sudo systemctl restart sshd

Như một biện pháp đề phòng, hãy mở một cửa sổ terminal mới và kiểm tra lại dịch vụ SSH có hoạt động bình thường không bằng lệnh:

ssh username@remote_host

Khi xác nhận rằng dịch vụ SSH vẫn hoạt động, bạn có thể đóng các phiên làm việc cũ an toàn.

Máy chủ CentOS của bạn giờ chỉ chấp nhận kết nối qua SSH key; cơ chế đăng nhập bằng mật khẩu đã bị vô hiệu hóa thành công.

Kết Luận

Bây giờ, bạn đã cấu hình thành công xác thực bằng SSH key trên máy chủ của mình, cho phép đăng nhập mà không cần nhập mật khẩu tài khoản. Phương pháp này không chỉ tăng cường bảo mật mà còn mang lại sự tiện lợi khi quản trị hệ thống.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *