SSH key là gì? SSH key là một cách để xác thực với một máy chủ SSH mà không cần mật khẩu. Bài viết này sẽ hướng dẫn bạn tạo SSH key bằng PuTTYgen và OpenSSH.
SSH key bao gồm một cặp khóa công khai (public key) và khóa riêng tư (private key) và nó sử dụng giao thức xác thực challenge-response mà trong đó một bên trình bày một câu hỏi (“challenge”) và một bên khác phải cung cấp một câu trả lời hợp lệ (“response”) được chứng thực.
Ư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 và bạn cũng không phải gửi mật khẩu qua mạng. Sử dụng SSH key là bảo mật hơn so với mật khẩu, vì nó khó khăn hơn để đoán hoặc đánh cắp.
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 là thích hợp nhất. PuTTYgen cũng là phần mềm đơn giản và nhanh nhất để tạo SSH key trên Windows.
Tải PuTTYgen và chạy chương trình link download tại đây.
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ư. Nếu bạn đã có một khóa riêng tư, bạn có thể nhấn Load để mở nó và xem hoặc lưu khóa công khai. Di chuyển trỏ chuột vào vùng trắng như hình dưới để tạo khóa.
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 và Confirm passphrase nếu như bạn muốn sử dụng mật khẩu cho khóa riêng tư. Bất cứ ai không có passphrase cũng sẽ không bao giờ có thể sử dụng được khóa riêng tư.
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ư.
Chú ý: trước khi lưu khóa, bạn có thể chọn tiêu chuẩn RSA hoặc DSA hoặc một loại khác phù hợp với máy chủ SSH của bạn. Bạn cũng có thể tăng cấp độ mã hóa bằng cách thay đổi số bit từ 2048 thành 4096. Nên để mặc định.
Như vậy là bạn đã có cặp khóa công khai (public key) và khóa riêng tư (private key). Nếu như bạn không muốn sử dụng PuTTYgen, bạn có thể sử dụng OpenSSH để tạo khóa.
Thêm SSH key vào máy chủ
Để sử dụng SSH key thì bạn cần phải thêm khóa công khai (public key) vào máy chủ và dùng khóa riêng tư để xác thực việc kết nối.
Nếu bạn thêm SSH key trong khi tạo VPS trên DigitalOcean, Vultr, Runabove hoặc bất cứ đâu thì chỉ cần copy nội dung của khóa công khai (public key) để cung cấp cho họ. Dưới đây là hướng dẫn thêm SSH key cho một VPS Linux như Ubuntu và CentOS. Dành cho trường hợp bạn muốn thêm SSH key cho một người dùng mới.
1: Đầu tiên bạn cần tạo thư mục .ssh
tại thư mục home của user (đối với user root thư mục /root/.ssh):
mkdir ~/.ssh
2: Tạo file authorized_keys trong thư mục .ssh vừa tạo ở trên:
vi ~/.ssh/authorized_keys
Bây giờ bạn cần copy nội dung của khóa công khai (public key) vào đây và lưu lại.
3: Thiết lập quyền cho thư mục và file ở trên:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Vậy là bạn đã thiết lập xong ở phía máy chủ.
Kết nối SSH bằng key
Kết nối đến một máy chủ SSH có thể được thực hiện trên Windows, Linux, Mac OS X và trên nhiều phần mềm như PuTTY, Terminal…
Windows
Đối với Windows, bạn nên sử dụng PuTTY SSH client để kết nối SSH bằng SSH key.
Chú ý: nếu bạn muốn sử dụng PuTTY để kết nối SSH thì bạn không thể sử dụng SSH key được tạo ra bằng OpenSSH. Bạn nên tạo SSH key bằng PuTTYgen. Hoặc bạn có thể chuyển đổi khóa được tạo bởi OpenSSH sang định dạng của PuTTY bằng cách mở PuTTYgen và nhấn nút Load thay vì Generate.
Tải PuTTY và mở chương trình. PuTTY cũng có sẵn để tải về trên Linux như Ubuntu, CentOS và Mac OS X.
Như thường lệ, ở mục Session bên cột trái, nhập IP của máy chủ hoặc tên miền và Port (mặc định là 22).
Ở cột tùy chọn bên trái, đi đến Connection > SSH > Auth và nhấn Browse… để mở khóa riêng tư (private key) của bạn. Bỏ qua bước này nếu bạn không muốn dùng SSH key.
Nhấn Open để kết nối SSH.