SSH là gì? Kiến thức về giao thức SSH từ A đến Z

SSH là gì? Kiến thức về giao thức SSH từ A đến Z

Tác giả: admin@
13:42 23/02/2022

SSH là gì? Hiện nay, SSH thường đi kèm với bản phân phối của Linux, OpenBSD, Sun Solaris,.. Giao thức này vai trò quan trọng trong quá trình quản lý, điều chỉnh máy chủ từ xa qua môi trường internet. Vậy chính xác SSH là gì? Giao thức SSH có cách thức hoạt động ra sao?

Giao thức SSH là gì?

Muốn hiểu rõ SSH là gì ngoài nắm rõ định nghĩa cơ bản, bạn còn phải tìm hiểu cơ chế hoạt động của giao thức này. 

Khái niệm 

SSH là gì? SSH viết đầy đủ là Secure Shell, đây là một giao thức hỗ trợ các nhà quản trị mạng truy cập vào máy chủ từ xa thông qua mạng internet không bảo mật. Ngoài ra, SSH còn cung cấp các bộ tiện ích phục vụ phát triển chính giao thức SSH.

SSH tạo ra cơ chế xác thực qua mật khẩu mạnh, hình thành mối liên kết giao tiếp dữ liệu mã hóa ra giữa hai máy qua môi trường internet. Ngày nay giao thức SSH được giấy quản trị mạng sử dụng phổ biến trong quá trình quản lý, điều chỉnh ứng dụng từ xa. Nó cho phép vị tự đăng nhập vào mạng máy tính và thực hiện một số tác vụ cơ bản như dịch chuyển file.

Cơ chế hoạt động 

Bạn sẽ chưa thể hiểu rõ SSH là gì nếu chưa nắm rõ cơ chế hoạt động của giao thức này. SSH gồm cả giao thức mạng và bộ tiện ích cơ bản để triển khai chính giao thức đó. Cụ thể, SSH ứng dụng ảnh mô hình client-server, kết nối với vùng hiển thị Session và vùng Session chạy.

Khi triển khai SSH hệ thống sẽ hỗ trợ cả giao thức ứng dụng, sử dụng cho trình giả lập Terminal hoặc truyền file. Trong thực tế, người ta còn sử dụng SSH để phát triển tunnel bảo mật cho các giao thức ứng dụng. 

Mục đích SSH được tạo ra là để thay thế cho trình giả lập Terminal, cơ chế đăng nhập không an toàn (Telnet, Rlogin). Giao thức SSH hỗ trợ tính năng đăng nhập, khởi chạy Terminal Session thông qua hệ thống điều khiển từ xa.

Chức năng cơ bản nhất của giao thức SSH là liên kết với một host từ xa, ứng với một phiên Terminal bằng dòng lệnh "ssh server.example.org". Dòng lệnh này có thể liên kết Client với một máy chủ server.example.com thông qua ID người dùng UserName.

Trường hợp đó là lần kết nối đầu tiên giữa của Server và Host, người dùng phải được thông báo mã khóa của Host. Đồng thời, nhắc nhở qua dòng lệnh dưới đây.

Nếu như lựa chọn đồng ý Yes, phiên để tiếp diễn và lưu lại Host Key trong file known_hosts. Đây là file ẩn, lưu trữ mặc định. Khi Client liên kết trực tiếp với Server trong lần tiếp theo, Host Key lập tức tiến hành xác thực và kết nối.

Super deal 032023

Chức năng chính

Giao thức đảm nhiệm khá nhiều chức năng trong hệ thống điều khiển, liên kết máy chủ. Các chức năng cơ bản phải kể đến như:

  • Hỗ trợ truy cập từ xa vào những hệ thống, thiết bị ứng dụng giao thức SSH.
  • Cho phép dịch chuyển file an toàn.
  • Thực thi lệnh bảo mật, an toàn trên hệ thống điều khiển từ xa.
  • Quản lý an toàn và hiệu quả thành phần hạ tầng mạng.

SSH có thể kết hợp với Terminal Session thay thế cho những chương trình Telnet có tính bảo mật thấp.

>>> Có thể bạn quan tâm: Hướng dẫn cài đặt Nox Player đơn giản chỉ trong 5 phút

Kỹ thuật mã hóa trong SSH

Ưu điểm lớn nhất của SSH nằm ở khả năng mã hóa, truyền tải dữ liệu an toàn giữa thành phần Host và Client. Trong đó, Host chính là máy chủ từ xa cần liên kết với máy tính Client. Kỹ thuật mã hóa thông qua SSH có thể triển khai theo 3 phương thức khác nhau.

Mã hóa Symmetric Encryption

Symmetric Encryption chính là một phương thức mã hóa ứng dụng Secret Key theo hai chiều, giải mã tin cho Host và Client. Như vậy, bất kỳ ai sở hữu mã khóa đều có khả năng giải mã tin nhắn trong quá trình truyền tin.

Symmetric Key được ứng dụng để mã hóa hoàn toàn phiên giao dịch diễn ra trong giao thức SSH. Trong đó, Host và Client có nhiệm vụ tạo Key bí mật, tuyệt đối không để lộ cho bên thứ ba.

Chính bởi Key không truyền tải giữa Client và Host nên thuật toán rất bảo mật. Cả hai máy tính có thể chia sẻ thông tin chung, ứng dụng chúng xác định mã Key bí mật. Bất kỳ máy tính khác có thể nắm bắt thông tin hay không, chúng cũng không dò được mã khóa bí mật.

Tuy nhiên cũng cần lưu ý rằng, Secret Token chỉ có thời hạn sử dụng trong một phiên SSH, nó hình thành từ chứng thực Client. Khi tạo mới Key, toàn bộ Packets giữa hai máy cần trải qua mã hóa bởi Private Key. Quá trình này gồm cả bước cung cấp mật khẩu bởi người dùng.

Mã hóa Asymmetric Encryption

Khác với Symmetric Encryption, phương thức Asymmetric Encryption lại dùng 2 khóa riêng biệt để phục vụ mã hóa và giải mã. Bao gồm khóa công khai Public Key và khóa riêng tư Private Key, hình thành cặp khóa Public-private key pair.

Khóa Public Key công khai trên tất cả các thành phần liên quan. Tuy nhiên, nó cũng liên hệ trực tiếp với khóa riêng tư Private Key. Chính sự phụ thuộc này nên Public Key gần như không thể tự mã hóa thư, giải mã bất cứ thứ gì đã mã hóa bởi Private Key.

Trong khi đó Private Key lại luôn tuyệt mật, không chia sẻ với bất kỳ bên thứ ba nào. Khóa riêng tư có khả năng giải mã thư. Vậy nên khi bên nào giải thành công thư gửi đến Public Key có nghĩa bên thứ đó đang sở hữu Private Key.

Vậy nhưng cũng cần lưu ý rằng Asymmetric Encryption không thể mã hóa tất cả SSH. Nó chỉ có thể sử dụng khi trao đổi thuật toán khóa. Trước thời điểm bắt đầu một phiên, phía 2 đầu trao đổi cần đồng ý khởi tạo cặp khóa Public - Private trong ngắn hạn. Đồng thời, chia sẻ Private Key để tạo ra một Secret Key chung.

Mỗi khi liên kết Symmetric chính thức thiết lập an toàn, máy chủ Server cũng đồng thời sử dụng Public Key của Client. Từ đó khởi tạo, thay đổi và truyền đến Client phục vụ quá trình chứng thực. Trường hợp Client giải thành công tin nhắn có nghĩa nó đang giữ Private Key. Phiên giao dịch SSH cũng đồng thời bắt đầu.

Super deal 032023

Mã hóa Hashing

Hashing một chiều là phương thức mã hóa ứng dụng phổ biến trong Secure Shell Connection. Khác với Symmetric Encryption và Asymmetric Encryption, Hashing không sử dụng vào mục đích giải mã. Chúng hình thành sau mỗi lần nhập liệu, không thể khai thác. Như vậy, Hashing sẽ không thể quay lại để giải mã.

Thông thường, để tạo ra một mật mã Hash rất đơn giản qua một lần Input. Thế nhưng chúng ta lại không thể tạo ra Input thông qua chính lần Hash đó. Nói cách khác, Client đang giữ Input đó. Điều này có nghĩa chỉ Client có thể tạo một crypto-graphic hash để tiến hành xác định hai bên nhập Input.

Giao thức SSH cần đến Hash để kiểm tra tính xác thực của tin nhắn. Quy trình xác thực này đảm bảo rằng lệnh không thể giả danh bởi bất cứ phương thức nào.

 

Cách thức xử lý các dạng mã hóa trong giao thức SSH

Trong phần tiếp theo của chuyên mục giải đáp SSH là gì, FPT Cloud sẽ giúp bạn giải thích sâu hơn về cách thức xử lý các dạng mã hóa. Như đã đề cập, SSH hoạt động theo mô hình Client - Server để chứng thực hai máy từ xa.

Giai đoạn Session Encryption Negotiation

Để liên kết Client với Server thông qua TCP, Server cần xuất trình Encrytpion Protocal và các phiên bản hỗ trợ. Trường hợp Client có Protocol tương thích, phiên bản cũng phải đúng như vậy. Khi đó một thỏa thuận cũng đồng thời được khởi tạo, tiếp nhận Protocol. Mỗi Server còn sử dụng Symmetric Public Key để xác thực.

Nếu đã thiết lập thành công, cả hai phía cần sử dụng thuật toán chung Diffie-Hellman Key Exchange Algorithm. Thanh toán này có nhiệm vụ tạo Symmetrical Key, đồng bộ quá trình liên lạc sau này.

Dưới đây là phần tóm tắt cách thức hoạt động của thuật toán:

  • Client và Server phải đồng ý với nguyên tắc sử dụng seed value. 
  • Cả hai phía ra cần thiết được lưu ý thách thức mã hóa triển khai bởi seed value thông qua thuật đặc biệt. Đó là cơ chế tạo mã hóa, tác động lớn đến seed value.
  • Cả hai bên tạo ra Private Key.
  • Private Key này chung thuật toán với mã hóa AES ứng dụng để tạo ra Public Key, phân phối đến máy còn lại.
  • Cả hai bên có quyền sử dụng Private Key. Trong khi đó, Public Key của máy còn lại sẽ kết hợp với Public Key để tạo ra một Key chung.
  • Khi cả hai đều có sẵn Shared Key, quá trình mã hóa Symmetric cho phiên SSH chính thức được khởi động.

Giai đoạn chứng thực người dùng 

Đây là bước cuối cùng để người dùng có thể truy cập vào server, thực hiện xác nhận thông tin trên chính hệ thống đăng nhập. Người dùng trước tiên cần nhập tên đăng nhập, sau đó là mật khẩu. Thông tin người dùng cung cấp tiếp tục được truyền đến một hệ thống bảo mật Symmetric, không cho bất kỳ bên thứ ba nào thu thập.

Mật khẩu mặc dù đã trải qua mạng mã hóa nhưng nếu người dùng không cẩn thận vẫn có thể bị lộ. Khi một bên nào đó thu thập thành công mật khẩu, tài khoản của người dùng dễ bị chiếm đoạt. Theo nhiều chuyên gia bảo mật, người dùng nên sử dụng SSH Key Pair, bộ khóa Asymmetric có chức năng xác thực thành viên không yêu cầu nhập mật khẩu.

Cách sử dụng SSH để kết nối với Server Linux 

Trong quá trình tìm hiểu khái niệm SSH là gì, bạn nên tham khảo thêm cách thức sử dụng SSH để liên kết với Server SSH.

Thiết lập Server Linux chấp nhận liên kết

Trước tiên để Server Linux kết nối với SSH, bạn phải thực hiện bước thiết lập trên server. Tùy theo phần cứng và phiên bản Linux, bạn có thể tùy chỉnh cài đặt.

Trong phần tổng hợp này, FPT Cloud sẽ hướng dẫn bạn cách sử dụng công cụ OpenSSH để cài đặt đăng nhập từ xa với giao thức SSH. Khi Download thành công công cụ về thiết bị, hãy tạo một Terminal bằng cách nhấn tổ hợp phím Ctrl + Alt + T và nhập dòng lệnh "sudo apt-get update",

Trước khi bắt tay vào khâu cài đặt OpenSSH, bạn cần kiểm tra chương trình nâng cấp. Cụ thể hãy nhập dòng lệnh "sudo apt-get upgrade" trong Terminal. Nếu cập nhật nâng cấp đã xong xuôi, bạn cần tiếp tục nhập dòng lệnh "sudo apt-get install openssh-server".

Định hình cấu hình cài đặt SSH cho Server 

Sau bước thiết lập chấp nhận liên kết, bọn nên bắt tay vào khâu chỉnh sửa cấu hình cơ bản. Cụ thể hãy mở một Terminal, mở file cấu hình SSH và nhập dòng lệnh "sudo nano /etc/ssh/sshd_config".

Theo cài đặt mặc định, SSH Server của người dùng thường hoạt động tại cổng số 22. Bên cạnh đó bạn có thể tăng cường bảo mật thông qua phương thức thiết lập mật khẩu phức tạp.

Trong Port, bạn cần tìm đến dòng MaxAuthTries. Sau đó nhập bất kỳ tự nào tại đây. Nếu muốn đăng nhập nhiều nhất 4 lần, bạn chỉ cần nhập dòng lệnh "MaxAuthTries 4".

Sau khi cài đặt xong công cụ OpenSSH, giao thức SSH Server sẽ bắt đầu khởi chạy. Còn nếu muốn kiểm tra giao thức đã chạy hay chưa, bạn cần nhập lệnh "sudo service ssh status".

Trường hợp không muốn chạy SSH, bạn nhập ngay lệnh "sudo service ssh stop".

>>> Có thể bạn quan tâm: Droid4x là gì? Hướng dẫn download và cài đặt chi tiết

So sánh giao thức SSH, SSL/TLS và Telnet 

Bạn sẽ chưa thực sự hiểu tường tận SSH là gì nếu chưa phân biệt điểm khác biệt của giao thức này với SSL/TLS và Telnet.

SSH và SSL/TLS

Cả SSH và SSL/TLS đều là giao thức ứng dụng để xác thực giữa các bên. Chúng đảm bảo an toàn trong quá trình chuyển tiếp dữ liệu. Tuy vậy, SSL/TLS thường kém bảo mật hơn so với SSH.

Nếu so sánh với giao thức SSL/TLS, SSH có thể xem như phiên bản rút gọn. Thế nhưng, SSH lại sở hữu khả năng liên kết trạm máy và máy khách vô cùng hiệu quả. 

SSH và Telnet 

Telnet được biết đến như một trong những giao thức internet ra đời sớm nhất. Giao thức này có khả năng khởi tạo và duy trì trình giả lập Terminal thông qua một Host từ xa.

Cả SSH và Telnet đều sở hữu một số điểm tương đồng về tính năng nhất định. Tuy nhiên điểm khác biệt lớn nhất của 2 giao thức này chính là cơ chế bảo mật. Theo đó, SSH luôn dùng Public Key khi cần xác thực Terminal Session, mã hóa lệnh đầu ra của từng phiên.

Còn với Telnet, giao thức này chủ yếu ứng dụng trong trình giả lập Terminal. Để hiểu rõ hơn sự khác biệt của hệ điều hành, bạn hãy theo dõi bảng so sánh tổng hợp sau:

Tiêu chí so sánh Giao thức SSH Giao thức Telnet 
Vị trí Port chạy  Port 22 Port 23
Tính an toàn  Rất an toàn  Kém an toàn 
Cơ chế mã hóa  Bằng Public Key  Truyền văn bản đơn thuần 
Hệ thống phù hợp  Public Network  Private Network 
Hệ điều hành tương thích  Tất cả hệ điều hành  Linux và Windows 
Bảng so sánh điểm khác biệt giữa SSH và Telnet 

 

Một vài vấn đề bảo mật của SSH 

Được đánh giá cao về tính an toàn nhưng SSH vẫn tồn tại một số nó học bảo mật máy tính. Cụ thể là tình trạng key lưu trữ trên Client dễ bị tích tụ, yêu cầu phải có nhân viên IT riêng để thực hiện khâu quản lý, dọn dẹp.

Mặt khác, dữ liệu lưu trong file SSH có thể bị lợi dụng chiếm đoạt quyền truy cập xác thực vào hệ thống từ xa. Vì thế mỗi doanh nghiệp cần phần xây dựng một quy trình lưu trữ, kiểm soát file cụ thể.

Phía nhà phát triển nên cẩn trọng khi kết hợp các lệnh hoặc hàm SSH trong Script hay những chương trình khác. Tuy rằng không khẩu để đưa lệnh SSH chứa ID người dùng cùng với password nhưng quá trình này dễ tạo lỗ hổng, tạo điều kiện cho hacker tấn công.

SSH nên sử dụng khi nào? 

Trong mô hình TCP / IP, giao thức SSH sẽ hoạt động tại tầng thứ 4. Đối tượng nhiệm vụ tương tác duy trì kết nối giữa máy chủ và máy khách. Thông qua cơ chế mã hóa chuyên biệt, giao thức này có thể đảm bảo dữ liệu truyền đi an toàn. So với Telnet, Rlogin đã khắc phục yếu điểm tốt về mặt bảo mật.

Sử dụng trong mọi datacenter

Giao thức SSH có mặt trong hầu hết datacenter và luôn đi kèm phần lớn Server Unix, Mac và Linux. Kết nối SSH hiệu ứng dụng phổ biến để xây dựng giao thức bảo mật cho hệ thống mấy cục bộ, Host từ xa.

Chẳng hạn như ứng dụng xây dựng quyền truy cập an toàn từ xa vào hệ thống tài nguyên, cập nhật phần mềm,.. Ngoài chức năng tạo đường dẫn an toàn cho máy cục bộ và Host từ xa, SSH cũng hỗ trợ quản lý Router, phần cứng máy chủ, một số nền tảng ảo hóa.

Kết nối hệ thống server

SSH có phải là kết nối hệ thống server. Từ đó thực hiện các thay đổi, nâng cấp thông qua công cụ hoặc Terminal. SSH Key thử sử dụng để truy cập tập vào server trong cách tự động, ứng dụng chủ yếu trong Script, backup, công cụ quản lý cấu hình.

 

Ứng dụng cho hệ thống đăng nhập một lần

Giao thức SSH hỗ trợ hoàn hảo để ứng dụng vào hệ thống đăng nhập một lần SSO. Theo đó, người dùng sẽ đăng nhập nhanh chóng, di chuyển qua lại giữa tài khoản mà không cần tốn thời gian nhập mật khẩu.

Mã hóa dữ liệu

Không chỉ hỗ trợ xác thực kết nối mã hóa mà SSH traffic còn tham gia trực tiếp vào quá trình lão hóa. Khi người dùng chuyển file, duyệt web, nhập lệnh hay những tác vụ khác đều diễn ra an toàn.

Xác thực thông tin

SSH kết hợp với ID người dùng và mật khẩu khi xác thực thông tin. Tuy vậy hiện nay, giao thức này chủ yếu hỗ trợ xác thực giữa hệ thống Host với nhau. Như vậy người dùng cá nhân vẫn phải sử dụng ID user và mật khẩu khi cần kết nối với Host từ xa.

Quá trình kết nối để thực hiện thông qua việc tạo một Public Key Pair ứng với từng Host. Trong đó, mỗi Session lại yêu cầu hai Public Key Pair. Một Key phục vụ xác thực máy cục bộ từ xa, Key còn lại làm nhiệm vụ xác thực máy cục bộ trực tiếp.

Giao thức SSH hỗ trợ đắc lực cho quá trình điều khiển, quản lý hệ thống máy chủ từ xa. Mong rằng bài viết trên đây của FPT Cloud có thể giúp bạn hiểu một cách chính xác SSH là gì!

 

Liên hệ với chúng tôi để biết thêm thông tin chi tiết về dịch vụ của FPT Smart Cloud

SSH là gì? Kiến thức về giao thức SSH từ A đến Z