Hướng dẫn sử dụng SSH Key trên Linux
Mỗi VPS khi đăng nhập bằng SSH đều phải chứng thực qua username và password, tuy nhiên việc sử dụng phương pháp chứng thực này mang lại 2 nguy cơ lớn là:
- Lộ mật khẩu dẫn tới mất dữ liệu hoặc thông tin trên VPS
- Bị tấn công dò tìm password (brute force) để xâm nhập vào VPS
Do đó, KDATA khuyến khích các bạn nên làm quen với SSH Key để đăng nhập vào VPS và sử dụng nó để xác thực các kết nối bên ngoài vào VPS để đảm bảo sự an toàn
1. Tổng quan SSH Key
Phương pháp này tạo ra 1 cặp key bao gồm:
- Private Key: được giữ bí mật, ai có Key này có thể đăng nhập vào Server không cần password. Key được lưu trữ ở phía Client
- Public Key: không cần thiết phải giữ bí mật. Key được lưu trữ ở phía Server. Client dùng Private Key tương ứng để SSH vào
2. Tạo và sử dụng SSH Key phía Client
Nhập câu lệnh sau vào Terminal
# ssh-keygen -t rsa -b 2048 -f [username]
(với -t là giao thức mã hóa, -b là độ dài khóa)
Hệ thống sẽ hiện thông báo “Enter passphrase” (bạn “Enter” hai lần để bỏ qua bước này, nhưng KDATA khuyên bạn nên nhập vào để tạo lớp bảo mật thứ 2 cho VPS của bạn)
Sau khi hoàn tất, chạy lệnh xem file, bạn nhập được kết quả
Có 2 file được sinh ra
- File [username]: Private Key (cần được giữ kỹ)
- File [username].pub: Public Key (add vào Server)
Chạy lệnh để copy nội dung Public Key lên VPS mà bạn cần SSH tới
# ssh-copy-id -i ~/.ssh/[username].pub user@IP (địa chỉ IP của SSH Server)
Việc này sẽ chuyển đoạn mã SSH Key vào thư mục /root/.ssh/authorized_keys của VPS (SSH Server)
3. Sử dụng SSH Key phía Server
Đăng nhập vào VPS với tài khoản user mà bạn cần thêm key (thường là root, nếu bạn có nhiều user thì mỗi user đều cần phải thêm key)
Gõ các lệnh dưới đây để tạo thư mục .ssh/ và file authorized_keys trong thư mục đó nếu chưa có:
# mkdir ~/.ssh # chmod 700 ~/.ssh # touch ~/.ssh/authorized_keys # chmod 600 ~/.ssh/authorized_keys
Đoạn mã Public Key sẽ được copy vào file authorized_keys nếu thực hiện đúng như mục 2, gõ lệnh xem nội dung file này
# vi ~/.ssh/authorized_keys
Đảm bảo không thể đăng nhập VPS bằng password của root, bạn mở file /etc/ssh/sshd_config và thay thế nội dung sau :
PasswordAuthentication yes -> PasswordAuthentication no
Sau đó khởi động lại giao thức SSH
# systemctl restart sshd
Kết quả
Sử dụng lệnh sau:
# ssh -i .ssh/[username] user@IP (địa chỉ IP của SSH Server)
([username] lúc này là Private Key)
Nội dung như trong hình nghĩa là bạn đã sử dụng được SSH Key
Chúc các bạn thành công!