Kết nối SSH bằng key-pair an toàn hơn mật khẩu

Rate this post

SSH(Secure Shell) là một giao thức mạng mã hóa để vận hành các dịch vụ mạng một cách an toàn trên một mạng không bảo mật. Các ứng dụng đáng chú ý nhất của nó là đăng nhập từ xa và thực thi dòng lệnh.

SSH key-pair thông qua việc sử dụng các kỹ thuật xác nhận khóa mã hóa, mang đến nhiều bảo về đăng nhập hơn là dùng mật khẩu truyền thống. Trong khi mật khẩu truyền thống có thể bị tấn công brute force thì SSH Key gần như là không thể giải mã.

Mục lục

HƯỚNG DẪN KẾT NỐI SSH BẰNG KEY-PAIR

Mô hình kết nối

Có 2 phương pháp(PP) để tạo ssh key-pair:

PP1: Tạo Key từ Server

Debian Server

Tải dịch vụ SSH.

				
					$ apt -y install ssh
				
			

Tạo Key-pair.

				
					$ ssh-keygen -t rsa
				
			
				
					Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
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:ykjUNWK6UiUS7V2h3J6xNiOv9J3s3MeyS4otLUP1VqU root@HTCTIPs
The key's randomart image is:
+---[RSA 2048]----+
|  oo. + +.       |
|   ..B =..      .|
|   .+.+.o      o |
|   o.... +.   E  |
|  . o . S. . .   |
|   o o =.o  o    |
|    . +... ...   |
|     . o+*.=. o  |
|      . o=O +=   |
+----[SHA256]-----+

				
			

Đổi tên id_rsa.pub thành ‘/root/.ssh/authorized_keys.pub’.

Như hình phần đầu bài Server sẽ giữ ‘Public key’ còn Client sẽ giữ ‘Private key’.

				
					$ mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys.pub
				
			
				
					$ chmod 600 ~/.ssh/authorized_keys.pub
$ chmod 700 ~/.ssh/
				
			
				
					#Hiển thị nội dung trong public key
$ cat /root/.ssh/authorized_keys.pub
ssh-rsa MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxzYuc22QSst/dS7geYYK5l5kLxU0tayNdixkEQ17ix
+CUcUbKIsnyftZxaCYT46rQtXgCaYRdJcbB3hmyrOavkhTpX79xJZnQmfuamMbZBqitvscxW9zRR9tBUL6vdi/0rpoUwPMEh8+
Bw7CgYR0FK0DhWYBNDfe9HKcyZEv3max8Cdq18htxjEsdYO0iwzhtKRXomBWTdhD5ykd/fACVTr4+KEY+IeLvubHVmLUhbE5
NgWXxrRpGasDqzKhCTmsa2Ysf712rl57SlH0Wz/Mr3F7aM9YpErzeYLrl0GhQr9BVJxOvXcVd4kmykjUNWK6UiUS7V2h3J6xNiOv9J3s3MeyS4otLUP1VqU root@HTCTIPs
				
			

Tìm dòng 4 dòng dưới đây sửa lại như sau:

				
					$ vi /etc/ssh/sshd_config

#Dòng 32:
PermitRootLogin prohibit-password

#Dòng 37:
PubKeyAuthentication yes

#Dòng 40
AuthorizedKeysFile  .ssh/authorized_key     .ssh/authorized_key.pub

#Dòng 56
PasswordAuthentication no
				
			
				
					#Khởi động lại dịch vụ
$ systemctl restart ssh
				
			

Việc còn lại là sao chép id_rsa đến Client.(id_rsa ở đây là private key).

Bạn có thể dùng những phương tiện khác để sao chép private key đến Client, miễn là kẻ gian không có được nó.

Sao chép id_rsa đến Debian Client

HTCTIPs sẽ sử dụng SCP từ server sao chép private key đến Debian Client.

				
					#192.168.1.2 là địa chỉ IP của Debian Client
$ scp /root/.ssh/id_rsa root@192.168.1.2:/root/.ssh/
				
			
Kiểm tra kết nối

Kiểm tra kết nối SSH key.

1.1. Debian Client kiểm tra kết nối
Sao chép id_rsa đến Windows Client

HTCTIPs sẽ sử dụng WinSCP trên Windows để sao chép private key từ Server về Windows Client.

1.2. Sao chép private key về Windows Client
Kiểm tra kết nối

Mở Putty. Kết nối.

1.3. Windows Client kiểm tra kết nối

PP2: Tạo Key từ Client

Cách 1: Debian Client

Tải dịch vụ SSH.

				
					$ apt -y install ssh
				
			

Tạo Key-pair.

				
					$ ssh-keygen -t rsa
				
			
				
					Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
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:14aab3f74ceb1979393b580d13a1ae8a83aaf16a036657b root@Client
The key's randomart image is:
+---[RSA 2048]----+
|       oo. + +.  |
|      ..B =..   .|
| .+.+.o      o   |
|   o.... +.   E  |
 . o . S. . .     |
|     o o =.o     |
|    . +... ...   |
|  . o+*.=. o     |
|   . o=O +=      |
+----[SHA256]-----+

				
			
				
					#Hiển thị nội dung trong public key
$ cat /root/.ssh/id_rsa.pub
ssh-rsa MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyTGwQPyEtTsOAvkMm5XP
TdsbsXG5I2yOcMI+y0UwGRN7APPBSNMVNAJM5UMSfcYnIhRHG9MHjlQWE3mI30Ch
+6Ry4Z1qT3UtfIhxHlNk2EhFql5xcCE42evcUL8aQvSdtoFreUmc0RmePV7xYfZg
Bo2uK9hRpWXAHDBondmTUvvi+iRoKf6uTqPK9wfYPu8BcmJWdUoaMSn9Tf5NwYLe
ayKEuWWMxK0ER7FAXvZkHp+AFgGgkapPco2zqb8x4aYzp0g/CzT6Pw0sUTJ2EfQS
L5sAtUTlvrNF2i9e27xZkH1ChLc6egF/cAIzM8iBj+08DtXWR4g4Xjz0F7OGpfMs
5QIDAQAB root@Client
				
			
				
					$ chmod 600 ~/.ssh/id_rsa.pub
$ chmod 700 ~/.ssh/
				
			

HTCTIPs sẽ sử dụng SCP di chuyển id_rsa.pub đến Debian Server ‘/root/.ssh/authorized_keys.pub’.

Như hình phần đầu bài Server sẽ giữ ‘Public key’ còn Client sẽ giữ ‘Private key’.

				
					$ scp /root/.ssh/id_rsa.pub root@192.168.1.1:/root/.ssh/authorized_keys.pub
authorized_keys.pub                                                    100%
				
			

Sau khi chép thành công Public Key đến Server. Trên Server phải cấu hình bắt buộc như sau:

				
					#Tìm 4 dòng đưới đây và sửa lại như sau:
$ vi /etc/ssh/sshd_config

#Dòng 32:
PermitRootLogin prohibit-password

#Dòng 37:
PubKeyAuthentication yes

#Dòng 40
AuthorizedKeysFile  .ssh/authorized_key     .ssh/authorized_key.pub

#Dòng 56
PasswordAuthentication no
				
			
				
					#Khởi động lại dịch vụ
$ systemctl restart ssh
				
			
Kiểm tra kết nối

Kiểm tra kết nối SSH key.

Cách 2: Windows Client

HTCTIPs sẽ sử dụng Puttygen để tạo key-pair. Mở WinSCP chạy Puttygen.

2.1. Puttygen

Tạo Public Key và Private Key và lưu lại.

2.2. Puttygen

Tải Putty và cài đặt.

Windows 64-bit MSI installer:
Windows 32-bit MSI installer:
Windows ARM64 MSI installer:

Mật khẩu giải nén(nếu có): htctips.net

HTCTIPs sẽ sử dụng WinSCP di chuyển authorized_keys.pub đến Debian Server ‘/root/.ssh/authorized_keys.pub’.

Như hình phần đầu bài Server sẽ giữ ‘Public key’ còn Client sẽ giữ ‘Private key’.

Sau khi chép thành công Public Key đến Server. Trên Server phải cấu hình bắt buộc như sau:

				
					#Tìm 4 dòng đưới đây và sửa lại như sau:
$ vi /etc/ssh/sshd_config

#Dòng 32:
PermitRootLogin prohibit-password

#Dòng 37:
PubKeyAuthentication yes

#Dòng 40
AuthorizedKeysFile  .ssh/authorized_key     .ssh/authorized_key.pub

#Dòng 56
PasswordAuthentication no
				
			
				
					#Khởi động lại dịch vụ
$ systemctl restart ssh
				
			
Kiểm tra kết nối

Mở Putty. Kết nối.

2.3. Kiểm tra kết nối

Chúc các bạn kết nối thành công SSH key-pair sau bài viết này! Mọi thắc mắc vui lòng comment phía dưới bài viết hoặc liên hệ mình nhé!

Leave a Reply

Your email address will not be published. Required fields are marked *