Tạo SSH Key chỉ với 3 bước đơn giản | Vietnix

Tạo SSH Key chỉ với 3 bước đơn giản

28/04/2021
19 Lượt xem

Việc tạo SSH key cho server sẽ tăng tính bảo mật hơn. Vậy SSH key là gì? Cách tạo SSH Key cho server của mình? Bài viết này sẽ hướng dẫn cho các bạn chi tiết và cụ thể nhất.

tao-ssh-key
Cách tạo SSH Key

Giới thiệu về SSH Key

Secure Shell (hay còn gọi là SSH) là một giao thức mật mã cho phép người dùng thực hiện dịch vụ qua các mạng không được bảo mật. SSH Key sẽ mang đến nhiều sự bảo mật về đăng nhập hơn là chỉ dùng mật khẩu thông thường. Trong khi mật khẩu thông thường có thể bị bẻ khóa thì SSH Key gần như là không thể giải mã.

Việc tạo một cặp Key sẽ cung cấp hai chuỗi ký tự: Một public key và một private key. Public key có thể được đặt ở bất kỳ server nào. Sau đó mở khóa bằng cách kết nối với máy client đã có private key. Khi cả hai đã khớp nhau, hệ thống sẽ mở khóa mà không cần mật khẩu. Ta còn có thể bảo vệ private key bằng một passphrase để tăng cường sự bảo mật.

Trong các lệnh ở bài viết này, sẽ có một số giá trị được highlight – chính là các biến, hãy thay thế chúng bằng các giá trị riêng của mình.

Bước 1 – Tạo một RSA Key Pair

Đầu tiên hãy tạo một key pair trên máy client (có thể là máy tính riêng):

ssh-keygen -t rsa

Bước 2 – Lưu trữ key và passphrase

Khi nhập lệnh Gen Key, bạn sẽ nhận được một số câu hỏi:

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Nhấn Enter, lưu file vào user home (trong bài viết này sẽ sử dụng tên của user là demo để làm mẫu).

Enter passphrase (empty for no passphrase):

Passphrase được sử dụng hay không thì tùy thuộc vào người dùng. Việc sử dụng passphrase mang lại một số lợi ích: tính bảo mật của key không bao giờ được hiển thị với bất kỳ ai khác, cho dù nó được mã hóa như thế nào. Nếu private key được bảo vệ bằng passphrase rơi vào tay user trái phép, họ sẽ không thể đăng nhập vào các tài khoản cho đến khi tìm ra được passphrase. Tất nhiên, nhược điểm duy nhất của passphrase là phải nhập nó mỗi khi sử dụng key pair.

Toàn bộ quá trình tạo key sẽ như sau:

ssh-keygen -t rsa
Output
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 @a
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

Public key hiện nằm trong /home/demo/.ssh/id_rsa.pub. Private key (identification) hiện nằm trong /home/demo/.ssh/id_rsa.

Bước 3 – Sao chép Public Key

Khi key pair đã được tạo, hãy đặt public key trên server mà chúng ta muốn sử dụng.

Sao chép public key vào file authorized_keys của máy bằng lệnh ssh-copy-id. Đảm bảo thay thế username và địa chỉ IP như mẫu bên dưới.

ssh-copy-id demo@198.51.100.0

Lưu ý: Nếu sử dụng Mac, ssh-copy-id sẽ không được cài đặt trên hệ thống. Tuy nhiên có thể cài đặt nó bằng Homebrew:

brew install ssh-copy-id

Ngoài ra còn có thể dán các key bằng SSH:

cat ~/.ssh/id_rsa.pub | ssh demo@198.51.100.0 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Cho dù chọn sử dụng lệnh nào thì các dòng sau sẽ vẫn hiển thị:

The authenticity of host '198.51.100.0 (198.51.100.0)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '198.51.100.0' (RSA) to the list of known hosts.
user@198.51.100.0's password:

Thông báo này đảm bảo rằng không có extra key nào được thêm vô.

Bây giờ hãy tiếp tục và đăng nhập vào user profile mà không cần phải nhập mật khẩu. Tuy nhiên, nếu đặt passphrase khi tạo SSH key, sẽ có yêu cầu nhập passphrase tại thời điểm đó (cũng như cho mọi lần đăng nhập kế tiếp).

Bước 4 – Vô hiệu hóa mật khẩu cho root login

Khi đã sao chép các SSH Key vào server của mình và đảm bảo rằng có thể đăng nhập bằng SSH Key. Hãy hạn chế root login thành chỉ có thể đăng nhập thông qua SSH Key.

Để thực hiện việc này, mở file SSH config:

sudo nano /etc/ssh/sshd_config

Trong file đó, hãy tìm dòng PermitRootLogin và sửa đổi nó như bên dưới để đảm bảo rằng user chỉ có thể sử dụng SSH Key:

/etc/ssh/sshd_config
PermitRootLogin without-password

Lưu và đóng file khi đã hoàn tất.

Để lưu những thay đổi này, dùng lệnh sau:

sudo systemctl reload sshd.service

Kết luận

Đến đây là bạn đã hoàn thành việc tạo SSH-Key trên server của mình. Chúc bạn may mắn!

Theo DitigalOcean.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments