Ăn cát bê tông: thực hành, thực hành và thực hành

Truy cập hosting bằng gõ lệnh thông qua chức năng SSH Access trong cPanel

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:

OpenSSH client trên hệ điều hành Ubuntu
man ssh sẽ cho bạn thấy như trên

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:

Truy cập SSH Access trong màn hình cPanel
Truy cập SSH Access trong cPanel

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:

Quản lý SSH Keys
Click nút Manage SSH Keys như hình

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

Tạo một key SSH mới trên cPanel
Nếu (1) mà có gì đó bạn cần hỏi lại bên cho thuê hosting vì sao như vậy

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:

Nút tạo mật khẩu SSH Key
Click nút Password Generator như hình

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:

Tạo mật khẩu ngẫu nhiên cPanel
Click (1), xong copy mật khẩu vào Notepad, tick (2) và click (3)

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:

Click nút Generate Key trong SSH Access trong cPanel
Click nút Generate Key để hoàn tất

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:

Thông báo tạo key SSH thành công
Mục (1) à (2) chính là thông tin có giá trị

Đế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:

Danh sách SSH key trong cPanel
Một key thường đi theo một cặp: public và private

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ả:

Đăng nhập SSH thành công.
Kết quả SSH thành công

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

Lên đầu trang