SSH là gì? SSH hoạt động như thế nào?

Đi liền với sự phát triển của công nghệ và khoa học thì ngày nay, việc kiểm soát và chỉnh sửa server đã trở nên dễ dàng hơn nhiều qua internet. Một trong những giao thức điều khiển từ xa nhận được nhiều yêu thích hiện nay chính là SSH. Vậy SSH là gì và nguyên lý hoạt động của nó như thế nào?

 SSH là gì

Vậy SSH là gì và nguyên lý hoạt động của nó như thế nào? Chúng ta sẽ cùng nhau tìm hiểu trong bài viết dưới đây.

SSH là gì?

SSH là viết tắt của Secure Shell, một giao thức điều khiển từ xa cho phép người dùng kiểm soát và chỉnh sửa server từ xa qua Internet một cách an toàn, bảo mật. Sự xuất hiện của SSH là để thay thế cho trình Telnet vốn không có mã hóa.

Không chỉ vật, Secure Shell còn cung cấp khả năng xác thực và bảo mật mạnh mẽ các dữ liệu được mã hóa giữa hai máy tính bởi SSH sử dụng kỹ thuật cryptographic để đảm bảo tất cả giao tiếp gửi tới và gửi từ server từ xa diễn ra trong tình trạng mã hóa. SSH dùng khóa mã hóa công khai để xác thực máy tính từ xa và cho phép máy tính từ xa xác thực người dùng, nếu cần.

Các quản trị viên mạng đã sử dụng SSH một cách rộng rãi để quản lý các hệ thống và ứng dụng từ xa, cho phép họ đăng nhập vào một máy tính khác qua mạng, thực thi lệnh và di chuyển các tệp từ máy tính này sang máy tính khác.

SSH là gì?

SSH hoạt động như thế nào?

Để hiểu rõ về bản chất của SSH thì trước hết, chúng ta cần phải nắm được nguyên lí hoạt động của giao thức điều khiển từ xa này. Việc sử dụng SSH sẽ tương đối đơn giản nếu như bạn đang chạy nền tảng Linux hoặc Mac, còn nếu đang dùng Windows, bạn sẽ cần sử dụng một SSH client để mở các kết nối SSH. SSH client phổ biến nhất hiện nay là PuTTY.

SSH có giao diện giống như một trình thông dịch dòng lệnh như Command Prompt trong phần lớn các bản phân phối Windows chứ không có giao diện đồ họa như cPanel. Bạn có thể truy cập trực tiếp vào máy chủ trong một môi trường bảo mật.

SSH hoạt động như thế nào?

Đối với người dùng Mac và Linux, có thể thao tác trực tiếp từ terminal mà không cần đến sự trợ giúp của SSH client:

Lệnh SSH bao gồm 3 phần riêng biệt như sau:

ssh {user}@{host}

Trong đó:

  • SSH key command cho hệ thống biết rằng bạn muốn mở một kết nối Secure Shell.

  • {user} chính là tài khoản bạn muốn truy cập. Ví dụ, bạn muốn truy cập vào root user hay tài khoản quản trị với toàn quyền trên hệ thống, có khả năng chỉnh sửa bất cứ thông tin gì, bạn nhập vào tài khoản tại đây.

  • {host} cho biết máy tính bạn muốn truy cập. Đó có thể là 1 địa chỉ IP (ví dụ: 244.235.23.19) hoặc 1 tên miền (ví dụ: www.xyzdomain.com).

Nhấn enter, bạn sẽ được nhắc nhập mật khẩu cho tài khoản bạn yêu cầu. Trong quá trình nhập, sẽ không có ký tự nào xuất hiện trên màn hình, nhưng trên thực tế mật khẩu đã được truyền đi. Sau khi nhập xong, nhấn enter một lần nữa. Nếu mật khẩu chính xác, một cửa sổ terminal sẽ hiện ra.

Một số lệnh SSH phổ biến

1. ls 

Ls là lệnh được sử dụng để liệt kê tất cả các tệp và thư mục. Nên sử dụng lệnh với tùy chọn -l, và ta có lệnh ls -l, bởi như vậy tất cả các tệp sẽ được liệt kê thuận tiện hơn, và bạn cũng sẽ có thêm chi tiết / thông tin về chúng. Một tùy chọn hữu ích khác là -a, option cũng giúp hiển thị tất cả các tệp, bao gồm cả các tệp / thư mục ẩn (các tệp có dấu "." ở trước, ví dụ: .ssh directory).

2. cd

Cd là viết tắt của “change directory”, được sử dụng để "di chuyển" giữa các thư mục. Sau khi liệt kê tất cả các tập tin và thư mục với ls, bạn có thể chọn một thư mục để "chuyển" đến.

Ví dụ: giả sử có một directory home mà bạn muốn nhập. Thực hiện nhập lệnh cd home và bạn sẽ ngay lập tức thay đổi vị trí hiện tại thành "home". Bạn có thể thử dùng lại lệnh ls để kiểm chứng rằng thông tin xuất ra màn hình đã được thay đổi. Hoặc bạn cũng có thể điền một đường dẫn đầy đủ tới một thư mục nhất định trong trường hợp muốn đi sâu vào một thư mục nhiều cấp độ. Ví dụ: Bạn có thể sử dụng: cd home / TestDirectory / AnotherDirectory để tới thẳng thư mục có tên AnotherDirectory. Sử dụng lệnh cd .. (gồm dấu cách và hai dấu chấm sau cd) để di chuyển lên một cấp (trong ví dụ này chúng ta sẽ tới "TestDirectory" từ "AnotherDirectory").

3. mkdir 

mkdir  là viết tắt của "make directory", là lệnh được sử dụng để tạo một thư mục mới.

Ví dụ: mkdir NewFolder sẽ tạo một thư mục mới với tên "NewFolder" trong thư mục hiện hành (thư mục hiện tại đang thao tác).

Một số lệnh SSH phổ biến

4. touch 

Lệnh touch sẽ tạo tệp mới với phần đuôi chỉ định.

Ví dụ: touch NewFile.txt sẽ tạo một tệp txt mới có tên là "NewFile" trong thư mục hiện hành (phần đuôi có thể đặt tên tùy ý, thậm chí bạn có thể tạo một tệp mới mà không cần thêm phần đuôi, ví dụ: touch NewFile.

5. rm 

Được sử dụng để xóa tệp / thư mục đã chọn.

Ví dụ: rm NewFile sẽ xóa tệp có tên là "NewFile" đã tạo trước đó. Nếu bạn muốn loại bỏ một thư mục và tất cả các thư mục con bên trong, sử dụng rm -r NewFolder để xóa thư mục "NewFolder" và tất cả các thư mục chứa bên trong nó.

6. cat

Lệnh cat sẽ hiển thị nội dung của tập tin.

Ví dụ: dùng cat info.txt để xuất nội dung tập tin lên màn hình.

7. pwd 

Lệnh này sẽ hiển thị vị trí hiện tại của bạn trong hệ thống tệp.

Ví dụ: gõ pwd, kết quả trả về có thể là như sau: "home/user/public_html".

8. cp 

Lệnh này được sử dụng để sao chép các tập tin và thư mục, với cú pháp là: cp [options] source dest

Để sao chép, bạn gõ file muốn copy thay cho source, thay dest bằng đường dẫn bạn muốn copy tới (đường dẫn có dạng path/folder/file). Nếu bạn gõ một tên đích không tồn tại, ví dụ, bạn có tệp gôc là oldfile.txt và tệp đích là newfile.txt, bạn sẽ đơn giản là copy tệp oldfile.txt và dán nó vào thư mục hiện tại bằng tên mới.

9. mv 

Lệnh này hoạt động giống như lệnh cp, nhưng thay vì copy, command này sẽ di chuyển các file. Ngoài ra, lệnh này cũng có thể được sử dụng để đổi tên tệp. Nếu lấy 1 ví dụ tương tự với lệnh cp, (trong thư mục hiện tại đang có một tệp oldfile.txt), khi gõ lệnh: mv oldfile.txt newfile.txt, kết quả file oldfile.txt sẽ được dổi tên thành newfile.txt.

10. grep 

Command này tìm kiếm chuỗi đã cho trong các file / folder.

Ví dụ: grep 'word' file sẽ tìm kiếm cụm từ 'word' trong file có tên là "file". grep sẽ trả về toàn bộ các dòng có chứa "word" từ file nếu cụm từ được tìm thấy. Ví dụ, có một dòng 'All in all it's just another word in a sentence ' trong tệp tên "file", sử dụng lệnh grep 'word', dòng này sẽ được xuất ra màn hình vì có chứa từ cần tìm.

11. find 

Lệnh này sẽ tìm kiếm các thư mục cho một hay nhiều file đáp ứng các tiêu chuẩn nhất định (tên, kích thước, loại tệp). Ví dụ: find. -name "* .html" Lệnh này sẽ xuất tất cả các tệp trong thư mục hiện tại có phần đuôi là ".html" (chú ý cách sử dụng ký tự "*" trong lệnh, đó là ký tự đại diện cho biết rằng bất kỳ thông tin gì trước ". Html" cũng sẽ được tìm kiếm chỉ cần file đó kết thúc bằng ".html".

12. vi / nano 

Lệnh này được sử dụng để nhập và chỉnh sửa nội dung văn bản.

Ví dụ: nano newfile sẽ tạo một tệp mới có tên là "newfile" và khởi động trình chỉnh sửa nano hoặc chỉnh sửa tệp đã tồn tại có tên là "newfile" bằng trình chỉnh sửa nano. Lệnh vi cũng tương tự như vậy, khởi động một trình soạn thảo khác có tên là "vi".

13. history 

Lệnh sẽ hiển thị các lệnh được sử dụng cuối cùng.

Ví dụ: history 20 sẽ hiển thị ra 20 lệnh được nhập cuối cùng trong Terminal.

14. clear 

Lệnh dùng để xóa tất cả văn bản khỏi màn hình Terminal.

15. tar 

Lệnh này được sử dụng để tạo hoặc trích xuất các tệp lưu trữ tar.gz. Hầu hết các phần mềm nhị phân của nhà cung cấp bên thứ 3 đều ở dạng lưu trữ tar.gz.

- Để tạo lưu trữ tar.gz của một thư mục, sử dụng lệnh: tar cvzf ArchiveName.tar.gz/path/to/directory

- Để giải nén các tệp này, sử dụng lệnh: tar xvzf FileName.tar.gz

Trong đó:

  • x: yêu cầu tar trích xuất tệp.

  • c: cho tar biết cần tạo một kho lưu trữ.

  • v: là viết tắt của verbose tức là tar sẽ in ra tất cả các tên tệp trong bảng điều khiển.

  • z: chỉ thị tar để giải nén lưu trữ.

  • f: cho tar biết rằng bạn đang cung cấp tên tệp của tệp lưu trữ.

16. wgetis 

Được sử dụng để tải xuống các tệp từ internet.

Ví dụ: để tìm tải tệp từ internet và lưu trữ tệp trong thư mục hiện tại, sử dụng lệnh: wget http://fileurl/filename.ext

17. du 

Được sử dụng để tìm size của một tệp. Sử dụng du -h/filepath để xác định 1 tệp nào đó chiếm bao nhiêu không gian.