Sữ dụng SSH keys

Lý do bạn nên sử dụng SSH Key thay password Root:

  1. Bảo mật hơn việc sử dụng password gấp n+1 lần. Hacker sẽ không thể tấn công bằng Brute Force Attack để đánh cắp password root được.
  2. Tiện lợi trong việc chứng thực vào một hoặc nhiều server nếu không đặt password cho SSH Key thì càng tiện =]].
  3. Dễ dàng cấp phát quyền cho ai đó làm việc trên một server hoặc nhiều server.

1. SSH Key hoạt động như thế nào?

SSH Key hiểu đơn giản là một phương thức chứng thực người dùng truy cập vào server bằng cách đối chiếu giữa một key cá nhân (Private Key) trên thiết bị truy cập lưu trữ và key công khai(Public Key) trên server lưu trữ. Nội dung mã hóa trong 2 key này hoàn toàn khác nhau nhưng Server sẽ tự mã hóa Public Key theo một chuẩn RSA và đối chiếu với Private Keynếu 2 key này giống nhau là hợp lệ.

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) – Copy ký tự key này sẽ bỏ vào file /root/.ssh/authorized_keys trên server của bạn.
  • Private Key (dạng file và string) – Lưu file này trên thiết bị đăng nhập, thiết lập cho PuTTY, WinSCP, MobaXterm,..
  • 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. Nếu để trống nó sẽ không hỏi!

2. Tạo SSH Key

Trên 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 tại đây.

Tải xong bạn 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, bạn phải rê chuột và click vòng vòng màn hình cho đến khi nó tạo xong.

Sau khi tạo xong, bạn sẽ thấy nó hiện ra thế này.

Kế tiếp đặt mật khẩu cho keypharse.

Cuối cùng Save Private Key và backup nó ở một nơi thật an toàn.

Còn cái public key là cái dãy loằng ngoằng ở trên, nó bắt đầu bằng từ khóa ssh-rsa AAA… Đoạn code này bạn sẽ copy bỏ vào server. Khi nào cần bạn có thể Load private key trong  PuTTYGen là nó hiện ra public key.

Lưu ý tạo OpenSSH pribvate_key cho linux thì export như sau:

Trên Linux (Mac/Ubuntu/LinuxMint,..)

Nếu bạn đang sử dụng Linux thì không cần phần mềm mà sẽ sử dụng Terminal gõ:

ssh-keygen -t rsa

Copy

Nó sẽ hỏi bạn muốn lưu private key này vào đâu, mặc định nó sẽ lưu vào /home/user/.ssh. Bạn có thể để trống và Enter.

Tiếp tục nó sẽ hỏi bạn có muốn thiết lập keypharse bạn thấy cần thì nhập vào rồi Enter.

Sau khi tạo xong, mặc định nó sẽ hiện ra thế này:

Trong đó bạn có thể thấy nó có ghi đường dẫn lưu file private key (id_rsa) và file public key (id_rsa.pub). Để xem được public key, bạn cứ mở file id_rsa.pub.

cat ~/.ssh/id_rsa.pub

Copy

Cái public key này bạn sẽ mang lên Server.

3. Cấu hình Public key trên Server

Đăng nhập vào Server với tài khoản mà bạn muốn áp dụng SSH Key.

Sau đó gõ các lệnh để tạo thư mục .ssh/ và file authorized_keys trong thư mục đó:

# Tạo foler .ssh
mkdir ~/.ssh
chmod 700 ~/.ssh
# Tạo file authorized_keys lưu Public Key
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Copy

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. Có bao nhiêu public key thì lưu bấy nhiêu dòng thôi.

Lưu ý:

  • SSH Key sẽ không thể hoạt động nếu bạn đang bật SELinux. Hãy tắt SELinux đi bằng cách mở file /etc/selinux/config, tìm SELINUX=enforcing và thay bằng SELINUX=disabled. Sau đó gõ lệnh reboot để khởi động lại server.
    Để kiểm tra xem nó đã hoạt động chưa, hãy đăng nhập lại vào SSH với tài khoản vừa thêm SSH Key. Nếu bạn đăng nhập bằng Linux thì nó sẽ tự hỏi keypharse của bạn, còn nếu bạn đăng nhập ở Windows dùng PuTTY thì phải trỏ file private key vào để nó chứng thực.
  • Trong trường hợp sau khi tạo và Upload Public Key, tuy nhiên vẫn không thể truy cập băng cặp Key vừa tạo, Lỗi nãy có thể xảy ra do chưa chmod file authorized_keys và thư mục .ssh.
  • Nếu đã phân quyền đẩy đủ, lỗi trên có thế do SELinux trên Linux. Tiến hành sử dụng lênh sau và thử lại:

restorecon -FRvv ~/.ssh

Nếu dùng MobaXterm thì gắn trong phần Advanced SSH Settings nhé, phần Use private key.

Bây giờ bạn đăng nhập và nó sẽ hỏi keypharse nếu bạn có đặt keypharse, còn không đặt là nó vô thẳng server.

Tắt chức năng sử dụng mật khẩu

Sau khi kiểm tra, nếu bạn thấy đã có thể đăng nhập vào server bằng SSH Key thì có thể tắt chức năng sử dụng mật khẩu đi vì nếu không tắt, các hacker vẫn brute force attack được.

Để tắt chức năng sử dụng mật khẩu trên server, bạn mở file /etc/ssh/sshd_config, và cấu hình như sau:

PasswordAuthentication no
UsePAM no

Cấu hình Private key cho SSH Client

Sau khi SSH Server đã thiết lập cho phép xác thực bằng SSH Key, thì ở Client phải sử dụng Private key có được khi sinh ra cùng Public key ở trên. File cấu hình ở client sẽ là  ~/.ssh/config (tạo mới nếu chưa có) dùng thiết lập các xác thực SSH Key đến host tương ứng

Ví dụ, kết nối đến 192.168.1.52 thì dùng Private key lưu tại /Users/Admin/.ssh/id_rsa, thì file config đó như sau:

Host pi4
      HostName 192.168.0.52
      IdentityFile ~/.ssh/id_rsa
      User pi
      IdentitiesOnly yes
      Port 22
      ServerAliveInterval 60

Do public key ở 192.168.1.52 phù hợp với private key ở client (/Users/Admin/.ssh/id_rsa), nên khi kết nối nó sẽ xác thực ngay bằng key mà không cần nhập password nữa

ssh pi4

Cũng lưu ý là Private key được chmod phù hợp (600)

Leave a Reply

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