Hướng dẫn sử dụng SSH key

Article ID: 515
Cập nhật gần nhất: 05 Th06, 2020

SSH Keys là một phương thức xác thực đăng nhập với máy chủ qua SSH bằng việc đối chiếu giữa một cặp keys, bao gồm một khóa riêng tư (private key) và khóa công khai (public key) tương ứng.

Khi bạn đăng nhập VPS thông qua username root và password do nhà phát hành cung cấp. Tuy sử dụng mật khẩu login vẫn tiềm ẩn những rủ ro về bảo mật như:

  • Bạn sẽ mật quyền kiểm soát nếu như để lộ mật khẩu.
  • Bị tấn công Brute Force để dò tìm mật khẩu.

Private Key Public Key luôn đi cặp với nhau, cặp key này được mã hóa với nhau thông qua một thuật toán riêng của nó. Public key bỏ lên máy chủ của bạn, còn Private key bạn sẽ lưu ở máy và khi đăng nhập vào server, server sẽ yêu cầu bạn gửi thông tin đăng nhập kèm theo Private Key. Server sẽ kiểm tra xem Private key của bạn có khớp với Public key có trên server hay không?

  • Private Key là một file text chứa dữ liệu được mã hóa, sử dụng thay cho password, thường được lưu trữ cẩn thận trên máy tính bạn. Thông thường, private key có độ dài ít nhất 2048bit và có thể được mã hóa bằng cụm mật khẩu nhằm tránh trường hợp bị sử dụng ngoài ý muốn. Định dạng file tùy thuộc phần mềm tạo keys, có thể OpenSSH Key, PuTTy Private Key Files .ppk hoặc Bitvise Keypair Files .bkp …
  • Public Key cũng là một file text chứa dữ liệu được mã hóa, có thể được cài đặt ở bất kỳ một server nào. Khi bạn gửi yêu cầu đăng nhập kèm private key, server sẽ kiểm tra sự trùng khớp với public key trên server nhằm xác thực yêu cầu truy cập. Định dạng file .pub

1. Cách tạo SSH Key

1.1 Đối với window

Hầu hết các các phần mềm SSH đều có công cụ tạo Keys, ví dụ: PuTTygen, ZOC, Bitvise SSH, ...Để đảm bảo bảo mật, bạn cần tạo cặp keys mã hóa bởi thuật toán RSA2 với độ dài ít nhất 2048bit.

Tạo SSH Keys bằng PuTTyGen:

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

Mở phần mềm PuTTygen, chọn Generate

Sau khi đã Generate xong, sẽ tạo ra môt bảng hội thoại sau:

Key passphrase: Đặt mật khẩu cho Private Key.

Save private key: Private Key lưu ở phía cá nhân. Chú ý : nên lưu Private Key một nơi thật an toàn,

Save public key: Public Key lưu ở phía server.

1.2 Đối với VPS

Các bạn có thể login vào VPS thông qua SSH và chạy lệnh sau:

ssh-keygen -t rsa

Trong quá trình cài đặt, chương trình sẽ hỏi bạn nơi lưu keys và mật khẩu sử dụng private key.

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #nơi lưu key
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): #mật khẩu cho private key
Enter same passphrase again: #xác nhận lại mật khẩu cho private key
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:HHEVGfBnBDwCGloexTKktTLMs7Upyreg+KUSGHXC34I root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| .   .*o+.o+==.  |
|  +o.*o=.o..+.   |
| . =O.=o.  ...o  |
|. E o*.+ .   o   |
|..  o.o S        |
|o. . .           |
| .+ o            |
|o. = .           |
|ooo .            |
+----[SHA256]-----+

Keys được tạo theo thuật toán mã hóa RSA, độ dài 2048bit và lưu tại /root/.ssh/. Trong đó, Private Key là id_rsa còn Public Key là id_rsa.pub.

2. Thêm Public Key vào VPS 

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 Keys:

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

# mkdir ~/.ssh/
# vi ~/.ssh/authorized_keys

Copy toàn bộ nội dung Public key sau đó lưu lại và thoát khỏi editor

Bật chế độ đăng nhập bằng SSH Keys: kích hoạt (uncomment) các tham số sau trong SSH Config tại /etc/ssh/sshd_config

  • PubkeyAuthentication yes
  • AuthorizedKeysFile .ssh/authorized_keys

Sau đó, khởi động lại SSH Service

# service sshd restart

3. Sử dụng SSH Key

Để sử dụng SSH Keys truy cập VPS, các bạn chỉ cần login thông qua các phần mềm SSH như PuTTy, Bitvise, ZOC và lựa chọn file Private Key đã tạo khi trước.

Lưu ý: Đăng nhập bằng SSH Client nào thì dùng chính phần mềm ý tạo SSH Keys.

Đối với PuTTy

Nếu sử dụng OpenSSH Keys (keys tạo bởi lệnh trong Linux/MacOS,…), bạn cần dùng PuTTygen để convert Private Key sang chuẩn đăng nhập với PuTTy.

Nhập IP VPS

Chọn đường dẫn tới Private Key

Sau khi đăng nhập được bằng SSH key

4.Tắt chức năng sử dụng password

Mở file /etc/ssh/sshd_config sửa các giá trị của các tham số sau:

PasswordAuthentication no
UsePAM no

Sau đó, khởi động lại SSH Service

service sshd restart

Chúc các bạn thành công.

Article ID: 515
Cập nhật gần nhất: 05 Th06, 2020
Lần sửa đổi: 9
Lượt xem: 0