SSH là gì? Kiến thức về giao thức SSH từ A đến Z
Xem nhanh
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?
>>> Xem thêm: Backup Service – Dịch vụ sao lưu dữ liệu đám mây
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.
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.
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.
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ư:
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.
>>> Xem thêm: 2FA là gì? Hướng dẫn cài đặt và kích hoạt bảo mật 2FA
Ư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.
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.
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.
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.
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.
Để 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:
Đâ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.
>>> Xem thêm: Mã hóa là gì? Vai trò và các loại mã hóa phổ biến nhất
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.
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".
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".
>>> Xem thêm: Top 16+ dịch vụ lưu trữ dữ liệu: so sánh, lợi ích, cách hoạt động
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.
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ả.
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 |
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.
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.
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.
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.
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.
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.
Những bài viết liên quan:
Mong rằng bài viết này của FPT Cloud sẽ giúp bạn hiểu rõ về SHH là gì? Vì đây là giao thức sẽ hỗ trợ đắc lực cho quá trình điều khiển, quản lý hệ thống máy chủ từ xa.