Hướng dẫn tạo và sử dụng SSH Key

SSH Key bạn cứ hiểu đơn giản là một phương thức chứng thực người dùng truy cập bằng cách đối chiếu giữa một key cá nhân (Private Key) và key công khai(Public Key).

Private key và Public key luôn có liên hệ chặt chẽ với nhau để nó có thể nhận diện lẫn nhau. Z.com nói vậy cho bạn dễ hình dung nhé, khi tạo một SSH Key thì bạn sẽ có cả 2 loại key này. Sau đó bạn mang cái public key bỏ lên máy chủ của bạn, còn cái private key bạn sẽ lưu ở máy và khi đăng nhập vào server, bạn sẽ gửi yêu cầu đăng nhập kèm theo cái Private Key này để gửi tín hiệu đến server, server sẽ kiểm tra xem cái Private key của bạn có khớp với Public key có trên server hay không, nếu có thì bạn sẽ đăng nhập được.

Nội dung giữa Private Key và Public Key hoàn toàn khác nhau, nhưng nó vẫn sẽ nhận diện được với nhau thông qua một thuật toán riêng của nó.

Bạn cứ hình dung Private Key là chìa khóa, còn Public Key là ổ khóa. Một khi chìa khóa mà vừa khít với ổ khóa thì cửa sẽ được mở.

Thành phần chính của một SSH Key

Khi tạo ra một SSH Key, bạn cần biết sẽ có 3 thành phần quan trọng như sau:

  • Public Key (dạng file và string) – Bạn sẽ copy ký tự key này sẽ bỏ vào file ~/.ssh/authorized_keys trên server của bạn.
  • Private Key (dạng file và string) – Bạn sẽ lưu file này vào máy tính, sau đó sẽ thiết lập cho PuTTY, WinSCP, MobaXterm,..để có thể login.
  • Keypharse (dạng string, cần ghi nhớ) – Mật khẩu để mở private key, khi đăng nhập vào server nó sẽ hỏi cái này.

Và một SSH Key bạn có thể sử dụng cho nhiều server khác nhau.

I. Cách tạo SSH Key

1. Đối với Windows

Nếu bạn sử dụng Windows thì sẽ dùng phần mềm PuTTY-Gen để tạo SSH, bạn có thể tải PuTTY-Gen tại đây.

Tải xong bạn mở ra, bạn chọn các tùy chọn như trong ảnh dưới rồi ấn Generate.

puttygen-generate

Trong lúc tạo, bạn hãy di chuyển chuột vòng vòng màn hình cho đến khi nó tạo xong.

Sau khi tạo xong, bạn sẽ thấy nó hiện ra thế này.

puttygen-aftergenerator

Bây giờ hãy đặt keypharse cho nó bằng cách điền keypharse ở trên.

puttygen-keypharsegenerator

Sau đó ấn Save Private Key và lưu nó trên một nơi thật an toàn, tốt nhất nên đưa 1 bản lên Dropbox nếu bạn có sử dụng.

puttygen-savepublickey

2. Đối với Linux (Mac/Ubuntu/LinuxMint,..)

Nếu bạn đang sử dụng Linux thì không cần phần mềm mà sẽ sử dụng Terminal để tạo. Hãy mở Terminal lên và gõ:

ssh-keygen -t rsa

Nó sẽ hỏi bạn muốn lưu private key này vào đâu, mặc định nó sẽ lưu vào /home/user/.ssh. Bạn có thể để trống và Enter.

Tiếp tục nó sẽ hỏi bạn có muốn thiết lập keypharse không, nếu muốn thì nhập keypharse cần thiết lập vào rồi Enter.

Sau khi tạo xong, mặc định nó sẽ hiện ra thế này:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:w5xj02c/a623thfFiKyuaj41qDuTcT5gnQ077UJ7mvQ [email protected]

The key’s randomart image is:

+—[RSA 2048]—-+

|              |

|              |

|        . . o |

|   .o o  o . o|

| . BS ..o   .|

| + O.=+.o . . |

|   . O.= o    o..|

| =.Boo .   .++|

| .*=BE.   .+=+|

+—-[SHA256]—–+

Trong đó bạn có thể thấy nó có ghi đường dẫn lưu file private key (id_rsa) và file public key (id_rsa.pub). Để xem được public key, bạn cứ mở file đó lên mà đọc nhé.

[root@150-95-110-124 ~]# cat /root/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDdaI2dqXxYIdJlPwJY2M+3GiNPw1iQfjUEMC0TeGTN9q8kMHAzo1ka/9ThyhhWKte8hn/5mTWQOoK21uTJu5JSWXQKsVAmHFQJjin3dIfsEY3TX/MX27XgIOqQ2Ku8z5kAGa2tUHVCLGyHEVZUChTT28T3JoM6thaz1bsFNCrqjL8ikoW4cDONd+b4Vw3b1DDVmxVe47xx20weK5kvoDo4nuVRNwUTXK8g9uuxe11wL5wYv48P54c0qgk5TBJ66erMEzhDdUJU0K5BcHjJ7Px4VoeWq0FzEl3C0YKMkTwhUMASxfeT17MMyRd/R1/1HYGpQH7bCPx3zOcSE2aNE7RL [email protected]

Và cái public key này bạn sẽ mang lên VPS.

II. Thêm public key vào VPS

Bây giờ hãy đăng nhập vào VPS với user mà bạn cần thêm key (thường thì là root, nhưng nếu VPS bạn có nhiều user thì sẽ cần thêm key cho tất cả user đó).

Sau đó gõ các lệnh dưới đây để tạo thư mục .ssh/ và file authorized_keys trong thư mục đó:

mkdir ~/.ssh

chmod 700 ~/.ssh

touch ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

Sau đó mở file authorized_keys trong thư mục .ssh ở thư mục gốc của user và copy toàn bộ ký tự của public key vào.

Lưu ý:

SSH Key sẽ không thể hoạt động nếu bạn đang bật SELinux. Hãy tắt SELinux đi bằng cách mở file /etc/selinux/config, tìm SELINUX=enforcing và thay bằng SELINUX=disabled. Sau đó gõ lệnh reboot để khởi động lại server.

Để kiểm tra xem nó đã hoạt động chưa, hãy đăng nhập lại vào SSH với tài khoản vừa thêm SSH Key. Nếu bạn đăng nhập bằng Linux thì nó sẽ tự hỏi keypharse của bạn, còn nếu bạn đăng nhập ở Windows thông qua các phần mềm khác như PuTTY thì khi đăng nhập, bạn phải trỏ file private key vào để nó chứng thực.

Nếu bạn dùng MobaXterm thì gắn trong phần Advanced SSH Settings nhé, phần Use private key.

Bây giờ bạn đăng nhập và nó sẽ hỏi keypharse nếu bạn có đặt keypharse, còn không đặt là nó dẫn bạn vô thẳng server.

Tắt chức năng sử dụng mật khẩu

Sau khi kiểm tra, nếu bạn thấy đã có thể đăng nhập vào server bằng SSH Key thì có thể tắt chức năng sử dụng mật khẩu đi vì nếu không tắt, các attacker vẫn brute force attack như thường và bạn vẫn bị mất dữ liệu nếu lộ mật khẩu.

Để tắt chức năng sử dụng mật khẩu, bạn mở file /etc/ssh/sshd_config và tìm rồi sửa các giá trị của các tham số như ở dưới:

PasswordAuthentication no

UsePAM no

Qua bài này chắc bạn cũng đã hiểu được SSH Key là gì và cách sử dụng nó ra sao, đây là một trong những việc rất quan trọng mà bạn cần làm vì chúng ta không thể đăng nhập vào VPS mãi thông qua phương thức truyền thống bằng mật khẩu, nó rất nguy hiểm nếu như máy tính bạn có mã độc hoặc vô tình làm lộ mật khẩu.

This entry was posted in Centos and tagged .

Leave a Reply