Site logo
Authors
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
Published on
Published on

SSH key là gì? Hướng dẫn tạo và quản lý SSH key bảo mật

SSH keys là một cơ chế bảo mật cơ bản cho việc truy cập từ xa vào máy tính. Chúng cung cấp một phương thức thay thế an toàn và tiện lợi hơn so với xác thực mật khẩu truyền thống. Hướng dẫn này sẽ giới thiệu cho bạn các khái niệm cơ bản về SSH keys và cách sử dụng chúng.

SSH Keys là gì?

SSH keys là các cặp khóa mã hóa bao gồm một khóa công khai và một khóa riêng tư.

  • Khóa Riêng Tư(Private Key): Khóa này được giữ bí mật và không bao giờ được chia sẻ. Nó được sử dụng để giải mã dữ liệu đã được mã hóa bằng khóa công khai tương ứng.
  • Khóa Công Khai(Public Key): Khóa này được chia sẻ với máy chủ từ xa, được chia sẻ tự do với người khác. Nó được sử dụng để mã hóa dữ liệu.

Lợi Ích Khi Sử Dụng SSH Keys

Tăng Cường Bảo Mật

SSH keys loại bỏ nguy cơ bị đánh cắp mật khẩu thông qua việc nghe lén hoặc tấn công thử mật khẩu như brute-force và các thử nghiệm phishing, vì chúng yêu cầu quyền truy cập vào khóa riêng tư.

Tiện Lợi

Sau khi cấu hình, SSH keys cho phép xác thực không cần mật khẩu, giúp việc truy cập vào nhiều máy chủ trở nên dễ dàng hơn. Bạn không cần phải nhớ và gõ lại mật khẩu phức tạp.

Khả Năng Mở Rộng

Chúng đặc biệt hữu ích trong môi trường có nhiều máy chủ, vì bạn có thể sử dụng cùng một cặp khóa trên nhiều hệ thống.

Tự động hóa

SH keys có thể dễ dàng tích hợp vào các kịch bản và công cụ tự động hóa.

Cách Tạo Và Sử Dụng SSH Keys

Bước 1: Tạo Cặp SSH Key

Sử dụng lệnh ssh-keygen trong terminal hoặc command prompt: để tạo cặp khóa

ssh-keygen -t ed25519 -C "your_email@example.com"
  • -t ed25519: Chỉ định loại khóa cần tạo, trong trường hợp này là Ed25519. Ed25519 là thuật toán chữ ký số hiện đại và an toàn đang ngày càng phổ biến do tốc độ và kích thước khóa nhỏ hơn so với RSA. Lưu ý: Ed25519 bảo mật hơn RSA nên được recommend sử dụng.
  • -C: Thêm một comment (comment có thể là bất kỳ văn bản nào bạn thấy hữu ích, Thường là email của bạn) để nhận dạng khóa.

Hệ thống sẽ yêu cầu bạn nhập một mật khẩu. Điều này thêm một lớp bảo mật vào khóa riêng tư của bạn.

Lưu khóa riêng tư an toàn (ví dụ: ~/.ssh/id_ed25519) và ghi lại vị trí của khóa công khai (ví dụ: ~/.ssh/id_ed25519.pub).

Để tùy chỉnh vị trí và tên tệp bạn dùng thêm option sau:

ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_rsa

Nếu bạn dùng hệ thống cũ không hổ trợ Ed25519 algorithm thì có thể dụng lệnh sau:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa: Chỉ định loại khóa (RSA trong trường hợp này).
  • -b 4096: Xác định độ dài của khóa để tăng cường bảo mật.
  • -C: Thêm một comment (comment có thể là bất kỳ văn bản nào bạn thấy hữu ích, Thường là email của bạn) để nhận dạng khóa. Lưu khóa riêng tư an toàn (ví dụ: ~/.ssh/id_rsa) và ghi lại vị trí của khóa công khai (ví dụ: ~/.ssh/id_rsa.pub).

Để tùy chỉnh vị trí và tên tệp bạn dùng thêm option sau:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa

Bước 2: Thêm Khóa Công Khai Vào Máy Chủ Từ Xa

1. Tìm khóa công khai của bạn:

Tệp khóa công khai thường nằm ở ~/.ssh/id_ed25519, ~/.ssh/id_rsa.pub hoặc tên bạn đã tuỳ chỉnh tại đường dẫn ~/.ssh/

2. Kết nối đến máy chủ:

Sử dụng kết nối bảo mật (ví dụ, ssh user@server_address).

3. Thêm khóa công khai vào tệp authorized_keys:

vi ~/.ssh/authorized_keys
echo "ssh-rsa YOUR_PUBLIC_KEY_HERE" >> ~/.ssh/authorized_keys
echo "ssh-rsa YOUR_PUBLIC_KEY_HERE" | sudo tee -a ~/.ssh/authorized_keys

Thêm khoá vào user cụ thể.

echo "ssh-rsa YOUR_PUBLIC_KEY_HERE" >> /home/ec2-user/.ssh/authorized_keys
echo "ssh-rsa YOUR_PUBLIC_KEY_HERE" | sudo tee -a /home/ec2-user/.ssh/authorized_keys

4. Kiểm tra kết nối:

Thử kết nối đến máy chủ bằng SSH.

ssh -i ~/.ssh/id_ed25519 user@remote_server

Hoặc

ssh -i ~/.ssh/id_rsa user@remote_server

Nếu cấu hình đúng, bạn sẽ truy cập vào server thành công

Mẹo Quản Lý SSH Keys

Sử Dụng Passphrase Để Tăng Cường Bảo Mật

Bảo vệ khóa riêng tư của bạn bằng một passphrase khi tạo. Điều này thêm một lớp bảo mật nữa trong trường hợp khóa của bạn bị xâm nhập.

Tổ Chức Các Khóa Cho Các Dự Án Khác Nhau

Lưu các khóa trong các thư mục riêng biệt và sử dụng ssh-config để quản lý dễ dàng hơn. Ví dụ cấu hình trong ~/.ssh/config:

Host project1
  HostName example1.com
  User your_user
  IdentityFile ~/.ssh/project1_rsa

Host project2
  HostName example2.com
  User your_user
  IdentityFile ~/.ssh/project2_rsa

Thường Xuyên Rotate( Xoay Vòng) SSH Keys

Thường xuyên xoay vòng khóa giúp giảm thiểu rủi ro truy cập trái phép nếu một khóa bị xâm nhập.

Các Vấn Đề Thường Gặp Với SSH Keys và Cách Khắc Phục

Lỗi Permission Denied (Public Key)

Đảm bảo rằng:

  • Khóa công khai đã được thêm đúng vào máy chủ từ xa.
  • Thư mục ~/.ssh và các tệp của nó có quyền chính xác.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Không Tìm Thấy Khóa Riêng Tư

Chỉ định tệp khóa riêng tư bằng cờ -i:

ssh -i ~/.ssh/id_rsa user@remote_server

Không thể truy cập

  • Kiểm tra security group của EC2 cho phép access vói port 22 và đảm bảo IP của bạn nằm trong whitelist IP.

Các Câu Hỏi Thường Gặp Về SSH Keys

  1. Tôi có thể sử dụng cùng một SSH key cho nhiều máy chủ không? Có, nhưng nên sử dụng các khóa riêng biệt để tăng cường bảo mật.

  2. Sẽ xảy ra gì nếu tôi mất khóa riêng tư? Bạn sẽ mất quyền truy cập vào các máy chủ liên quan. Luôn giữ bản sao lưu ở những vị trí an toàn.

  3. SSH keys có tốt hơn mật khẩu không? Chắc chắn! SSH keys cung cấp xác thực mạnh mẽ hơn và loại bỏ nguy cơ bị đánh cắp mật khẩu. Hãy chuyển sang xác thực bằng SSH key và kiểm soát bảo mật của bạn

Tổng Kết

SSH keys là một yếu tố quan trọng trong việc quản lý hệ thống bảo mật và máy chủ từ xa. Bằng cách sử dụng SSH keys, bạn có thể tăng cường bảo mật, tối ưu hóa quy trình làm việc, cải thiện hiệu quả và đơn giản hóa việc quản lý quyền truy cập.