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
-
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.
-
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.
-
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.