Hướng dẫn tạo public và private key để truy cập SSH vào hosting Linux thường dùng cho các website chạy với PHP.
Truy cập SSH là gì?
SSH là tên gọi tắt của The Secure Shell Protocol (SSH Protocol), tức là giao thức truy cập an toàn trong môi trường dòng lệnh.
Nếu bạn chỉ sử dụng môi trường Windows trong công việc hàng ngày không liên quan đến lập trình, viết mã hoặc làm các công tác về quản trị hệ thống bạn sẽ hiếm khi dùng đến môi trường dòng lệnh. Nhưng có lẽ lần nào đó trong đời bạn sẽ nghe ai đó nói “vào CMD đi”.
Với server, việc sử dụng dòng lệnh có lúc gần như là bắt buộc bởi vì nhiều server không có trang bị GUI. SSH là một công cụ rất thông dụng trong thế giới Unix, Linux.
Để điểu khiển một máy tính từ xa với vai trò là server từ máy tính khác (với vai trò là client) bạn cần thiết lập server như là một SSH Server và ở client sẽ có công cụ SSH Client.
SSH Server thông dụng nhất đó là OpenSSH, với các distro thông dụng trên Linux, bạn chỉ cần gõ một vài dòng lệnh để cài đặt hoặc khi bạn thuê VPS, dedicated server bên cho thuê đã cài đặt sẵn cho bạn.
Trong khi đó, SSH Client sẵn có nếu bạn sử dụng Linux, MacOS (máy tính Apple) mặc định hệ điều hành đã trang bị công cụ cho bạn, chỉ cần gõ lệnh man ssh để xem hướng dẫn. Hình minh họa sau do KACBT gõ ngay trên máy của mình:
Bạn dùng Windows sẽ có chút lóng ngóng hơn chút với SSH Client (nếu bạn không biết sử dụng WSL tích hợp được với Windows 10 trở đi) vì Windows không có sẵn SSH Client. Không sao hết, bạn chỉ tải về phần mềm PuTTY hoặc WinSCP để sử dụng. Có thể tra cứu Help chừng 30 phút là bạn sử dụng ngon lành.
Các bước thực hiện trong cPanel
Với shared hosting cPanel chuẩn có trang bị SSH để bạn có thể kết nối đến server và thực hiện được một số lệnh trong quyền hạn user ở thư mục của bạn. Với các lệnh shell, bạn sẽ làm được một số việc mà nếu chỉ sử dụng giao diện web thông qua các công cụ có sẵn trong cPanel bạn sẽ “nổ não”.
Ở màn hình chính cPanel bạn tìm đến mục SSH Access như hình minh họa sau:
Bạn cũng có thể sử dụng ô tìm kiếm ở góc phải – trên của màn hình chính cPanel gõ vào SSH Access cho nhanh. Ra một màn hình thông báo khác, trông giông giống sau:
Đến đây bạn sẽ thắc mắc: SSH Key là cái quái gì vậy? Bạn bắt đầu cảm nhận rằng đế kết nối từ SSH Client đến SSH Server sẽ phải có việc xác thực (hiểu đơn giản: giống như bạn đăng nhập với username và password). Key chính là chìa khóa để mở cách cửa vào trong server.
Click nút Generate a New Key (2) như hình trên để đưa bạn đến một màn hình khác:
Ngay khi click nút Password Generator liền bung lên một cửa sổ có công cụ do cPanel trang bị để giúp bạn tạo mật khẩu ngẫu nhiên mạnh, an toàn. Cửa sổ tạo mật khẩu ngẫu nhiên đó trông như sau:
Sau bước trên, bạn đã có một mật khẩu mạnh, cửa sổ đóng lại và điền vào cho bạn, đưa bạn trở về màn hình ban đầu. Lúc này, bạn chỉ cần kéo màn hình xuống tí xíu để thấy nút Generate Key như sau:
Bạn click nút Generate Key để cPanel giúp bạn tạo key. Lúc này, màn hình thông báo thành công hiện ra, trông giông giống như sau:
Đến đây, bạn hieru rằng có 2 key được sinh ra: một key gọi là public key, tức là nó liên quan đến (2) có tên id_rsa.pub ở hình trên, còn (1) id_rsa chính là private key.
Bạn hãy Google để hiểu public key và private key là gì vì nếu giải thích vào đây bài sẽ quá dài, cũng không giúp bạn hiểu thêm về các thuật ngữ liên quan. Bấm liên kết Go Back ở cuối trang màn hình để quay trở về màn hình SSH Access, lúc này thấy key vừa tạo trong danh sách:
Như vậy, một bộ key đã được tạo ra. Nếu hình dung trong thế giới thật, đó chính là ổ khóa và chìa khóa. Ổ khóa tương đương với Public key, còn chìa khóa tương ứng với Private key.
Làm gì với cặp đôi xinh đẹp public và private key?
Vì KACBT sử dụng Ubuntu như là hệ điều hành duy nhất trên các máy tính nên việc sử dụng được minh họa với máy Ubuntu trước tiên, bạn không có gì phải thắc mắc vì sao không đề cập Windows trước.
Quay lại với hình có cặp key ở trên, ta để ý thấy Public Keys có cột Authorization Status là not authorized, có nghĩa là ta cần phải Authorize cho nó bằng cách click liên kết Manage để mở ra một màn hình có dòng chữ: The key with the name “id_rsa” is currently “not authorized” for use when connecting to this account và bạn bấm nút Authorize là xong.
Ở phần Private Keys, click liên kết View/Download để tải file về máy tính của KACBT, một file tên là id_rsa
Nếu bạn sử dụng phần mềm SSH Client là PuTTY hoặc WinSCP, bạn cần điền mật khẩu đã tạo ở phần bên trên vào bên dưới mục Convert the “id_rsa” key to PPK format:
Chép file id_rsa vào thư mục ~/.ssh bằng lệnh cp id_rsa ~/.ssh/id_rsa
Thiết lập lại quyền cho key (để tránh báo lỗi ngớ ngẩn) với lệnh chmod 600 ~/.ssh/id_rsa
Đến đây, xem như hoàn tất việc đặt key vào đúng vị trí trên hệ điều hành họ Linux được sử dụng như SSH Client sử dụng phần mềm OpenSSH-client đã được tích hợp sẵn.
Kiểm tra xem SSH có hoạt động?
Mở cửa sổ lệnh (Terminal) trong Ubuntu lên bằng cách bấm tổ hợp phím Ctrl + Alt + T và gõ lệnh sau:
kacbt@kacbt-ubuntu:~$ ssh -i .ssh/id_rsa kacbt@khoancatbetong.com
Hồi hộp chờ đợi xem chuyện gì xảy ra. Chỉ mất 3 giây sau đó đã có thể xem được kết quả:
Trường hợp nếu hosting của bạn không hỗ trợ cổng 22 mặc định của SSH thì bạn cần phải gửi ticket hỗ trợ để hỏi họ xem họ dùng port nào. Thay port đó (minh họa port 2222) vào câu lệnh như sau:
kacbt@kacbt-ubuntu:~$ ssh -p2222 -i .ssh/id_rsa kacbt@khoancatbetong.com
Nếu bạn sử dụng Windows với PuTTY hoặc WinSCP thì chỉ khác ở chỗ là giao diện đò họa và bạn import file có định PPK vào trước khi lần đầu tiên kết nối. Khi đăng nhập thành công, cửa sổ lệnh cũng không khác mấy ở trên, sẵn sáng để bạn gõ lệnh.
Gặp vấn đề gì trong quá trình truy cập SSH bạn có thể vào Thảo luận để đặt câu hỏi. KACBT rất vui lòng giải đáp cho bạn khi có đủ thông tin về vấn đề được cung cấp và câu hỏi rõ ràng./.