SSH Key Là gì?
SSH Key – ssh-keygen là một thành phần tiêu chuẩn của bộ giao thức Secure Shell được tìm thấy trên các hệ thống máy tính Unix, Unix và Microsoft Windows được sử dụng để thiết lập các phiên shell an toàn giữa các máy tính từ xa qua các mạng không an toàn, thông qua việc sử dụng các kỹ thuật mã hóa khác nhau.
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.
Cách thức hoạt động của 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. Mình 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ế thôi.
Cách tạo SSH Key
Đố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 bản mới nhất tại đây hoặc tại đây
Tải xong bạn hãy mở ra, bạn chọn các tùy chọn như trong ảnh dưới rồi ấn Generate.
Trong lúc tạo, rê chuột xung quanh khung trắng để khởi tạo key nhanh hơn. Nếu bạn đã có Private Key thì chỉ cần nhấn Load để tạo Public Key tương ứng(dùng khi convert Private Key dạng OpenSSH sang).
Sau khi tạo xong, màn hình hiển thị Public Key. Bạn có thể thiết lập Passphrase và Key Comment. Sau đó click Public key và Save private key để lưu key lại. Public key sẽ là cái đoạn mà bạn sẽ copy bỏ vào server.
Đối với Linux/Ubuntu (và macOS)
Bạn có thể tạo cặp Key trên VPS Linux bất kỳ hoặc trên macOS thông qua Terminal bằng dòng lệnh bên dưới.
ssh-keygen -t rsa
Trong quá trình cài đặt, chương trình sẽ hỏi bạn nơi lưu key (mặc định nó sẽ lưu vào /root/.ssh) và mật khẩu sử dụng private key (bạn nên thể bỏ trống)
[root@tieuca home]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again:
Chuỗi key sau khi tạo xong:
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:STPbXg3vjvEAbTrwtngeMVVWBS074ZlqsjC1hj7TXog root@tieuca The key's randomart image is: +---[RSA 2048]----+ | +++| | oo .| | + o. * | | . *.o +* | | So=.+.o. | | +=+Oo. | | .E=O++ . | | +o+= * | | .*+ . o | +----[SHA256]-----+
Key được tạo theo thuật toán mã hóa RSA, độ dài 2048 bit và lưu tại /root/.ssh/
. Trong đó, Private Key là id_rsa còn Public Key là id_rsa.pub ( là cái bạn mang lên cài trên VPS), đều là OpenSSH Key.
Thêm public key vào VPS
Đăng nhập vào server Linux với user
mà bạn cần thêm key( thông thường mặc định sẽ là root
). Bạn cần lưu thông tin Public Key tại ~/.ssh/authorized_keys
để xác thực đăng nhập sử dụng SSH Key
Sau đó gõ lần lượt 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 (id_rsa.pub) vào và lưu lại.
Sử dụng SSH Key để đăng nhập VPS
Để đăng nhập vào VPS thông qua SSH key, bạn cần sử dụng các phần mềm SSH Client như PuTTy, Bitvise, ZOC,…. Ở đây mình sử dụng PuTTY
Nếu bạn thiết lập passphrase, phần mềm sẽ yêu cầu nhập passphrase còn nếu không bạn sẽ đăng nhập vào thẳng server.
Vô hiệu hóa đăng nhập sử dụng mật khẩu
Để gia tăng bảo mật, tránh bị mất dữ liệu nếu lộ mật khẩu, bạn nên vô hiệu hoá chức năng đăng nhập bằng mật khẩu trên VPS của bạn
Để vô hiệu hóa đăng nhập sử dụng mật khẩu, bạn mở file /etc/ssh/sshd_config
, 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ì, cách thức hoạt động, cách sử dụng cũng như tầm quan trọng của nó.
Đây là một trong những việc rất quan trọng mà bạn cần làm khi tạo VPS, Server 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.
Bài viết có tham khảo các nguồn khác nhau.