Tạo và sử dụng SSH key bằng PuTTYgen và OpenSSH

SSH key là việc xác thực với một máy chủ SSH bằng việc sử dụng cặp khóa public key và private key mà không cần mật khẩu. Bài viết này sẽ hướng dẫn bạn tạo và sử dụng SSH key bằng PuTTYgen và OpenSSH.

Ưu điểm của việc sử dụng SSH key là không cần phải nhập mật khẩu cho mỗi lần xác thực (tuy nhiên bạn phải nhập Passphrase nếu có). Sử dụng SSH key là bảo mật hơn so với mật khẩu, vì nó bắt buộc phải có khóa riêng tư để xác thực nên khó khăn hơn để đoán hoặc đánh cắp.

Tạo SSH Key

Tạo SSH Key bằng OpenSSH

Tạo RSA Key Pair

ssh-keygen

Mặc định thì hệ thống sẽ tạo SSH key loại RSA với số bit mã hóa là 2048. Bạn có thể gán thêm một số tùy chọn như sau:

  • -t: khai báo loại key mà bạn muốn tạo, có thể là rsa, dsa, ecdsa và ed25519.
  • -b: đây là số bit mã hóa của khóa
    • RSA: tối thiểu là 1024 và tối đa là 16384 bits.
    • DSA: 1024 bits.
    • ECDSA: 256, 384 hoặc 521 bits.
    • Ed25519: 256 bits.
  • -C: comment cho khóa, về mục đích sử dụng của khóa, hoặc một nội dung gì đó.

Ví dụ tạo SSH key loại RSA

ssh-keygen -t rsa

Chọn nơi lưu trữ và Passphrase

Nhấp phím Enter để lưu file. Mặc định thì SSH key sẽ được lưu trong thư mục .ssh của user (/home/user/.ssh/) hoặc root (/root/.ssh/). Chúng bao gồm khóa riêng tư id_rsa và khóa công khai id_rsa.pub

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

Nhập mật khẩu cho Private key (Passphrase)

Enter passphrase (empty for no passphrase):

Toàn bộ quá trình tạo khóa sẽ trông như sau:

ssh-keygen
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:
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:
c5:37:0a:ee:0a:68:2d:75:da:3f:12:12:27:a2:4b:15 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
| |
| E . |
| . . o o |
| ..o .. o o . |
| ....+. S . |
|.. +.+.. |
|..+ +.... |
|.. . ..o. |
| .... |
+-----------------+

Tạo SSH Key bằng PuTTYgen

Nếu bạn đang sử dụng PuTTY để kết nối SSH thì bạn nên tạo SSH key bằng PuTTYgen cho hợp nhất

Tải PuTTYgen

Tải PuTTYgen và chạy chương trình.

putty-key-generator

Tạo khóa

Nhấn vào nút Generate để tạo mới một cặp khóa công khai và khóa riêng tư, di chuyển con trỏ chuột vào khoảng trống của thanh tiến trình để tạo khóa (di chuyển cho đến khi thanh tiến trình đạt 100%)

putty-key-generator-1

Bạn có thể thay đổi Key comment để dễ phân biệt và dễ nhớ nếu như bạn có nhiều key.
Nhập mật khẩu cho Key passphrase Confirm passphrase, nó chính là mật khẩu của khóa riêng tư.

putty-key-generator-2

Nhấn Save public key để lưu khóa công khai của bạn, hoặc bạn có thể copy nội dung khóa công khai mà không cần lưu file này. Nhấn Save private key để lưu khóa riêng tư.

Đưa khóa công khai vào máy chủ

Sau khi tạo khóa bằng OpenSSH hoặc PuTTYgen. Để sử dụng SSH key thì bạn cần phải thêm khóa công khai (public key) có tên là authorized_keys vào máy chủ và dùng khóa riêng tư (private key) để xác thực việc kết nối từ máy trạm.

Các bước thực hiện như sau:

Tạo thư mục .ssh tại home của tài khoản user hay root của tài khoản root

mkdir ~/.ssh

Tạo file authorized_keys trong thư mục .ssh vừa tạo ở trên, có thể sử dụng vi, vim, nano… tùy thích:

nano ~/.ssh/authorized_keys

Sao chép nội dung của khóa công khai (public key) vào và lưu lại

Thiết lập quyền cho thư mục và file ở trên

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Ok, vậy là xong thiết lập cho máy chủ, bây giờ bạn cần dùng một chương trình kết nối SSH như ZOC Terminal, PuTTY… để tiến hành login và sử dụng thôi

Chú ý: nếu sử dụng PuTTY thì Khóa riêng tư (Private key) do OpenSSH tạo ra cần phải chuyển về định dạng của PuTTY (.ppk) trước bằng công cụ PuTTYgen

putty-key-generator-convert

Tắt chức năng xác thực bằng mật khẩu

Một khi bạn đã đăng nhập bằng private key thành công thì bạn có thể tắt chức năng đăng nhập bằng mật khẩu để hạn chế tối đa các nguy cơ bảo mật từ việc sử dụng mật khẩu.

Mở file /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Tìm và chỉnh sửa dòng sau, xóa dấu # nếu có:

PasswordAuthentication no

Khởi động lại SSH

sudo service sshd restart

Leave a Reply