SSH là cái gì? Hiện tại, SSH thường đi kèm với phiên bản phân phối của Linux, OpenBSD, Sun Solaris,.. Giao thức này có vai trò quan trọng trong quá trình quản lý, điều chỉnh máy chủ từ xa thông qua môi trường internet. Vậy đúng là SSH là gì? Giao thức SSH hoạt động như thế nào?
Giao thức SSH là gì?
Để hiểu rõ SSH là gì ngoài việc hiểu định nghĩa cơ bản, bạn cần tìm hiểu cơ chế hoạt động của giao thức này.
Ý nghĩa
SSH là gì? SSH trong tên đầ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 qua mạng internet không an toàn. Ngoài ra, SSH cũng cung cấp các công cụ hỗ trợ cho việc phát triển chính của giao thức SSH.
- SSH là gì?
SSH tạo ra cơ chế xác thực thông qua mật khẩu mạnh, tạo ra một kết nối mã hóa dữ liệu giữa hai máy qua mạng internet. Hiện nay, giao thức SSH được nhiều nhà quản trị mạng sử dụng phổ biến trong quá trình quản lý và điều chỉnh ứng dụng từ xa. Nó cho phép người dùng đă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ư chuyển đổi tệp tin.
Cơ chế hoạt động
Bạn sẽ không thể hiểu rõ SSH là gì nếu bạn không hiểu rõ cơ chế hoạt động của giao thức này. SSH bao gồm cả giao thức mạng và các công cụ cơ bản để triển khai giao thức đó. Cụ thể, SSH sử dụng mô hình client-server, kết nối với vùng hiển thị Session và vùng Session chạy.
- Miêu tả cơ chế hoạt động của SSH
Khi triển khai giao thức 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. Trên thực tế, người ta còn sử dụng SSH để phát triển đường hầm bảo mật cho các giao thức ứng dụng.
Mục tiêu của 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 như Telnet, Rlogin. Giao thức SSH hỗ trợ tính năng đăng nhập, khởi chạy Phiên Terminal 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à kết nối với một máy chủ từ xa, tương ứ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ể kết nối 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 Máy chủ và Máy chủ, người dùng phải được thông báo mã khóa của Máy chủ. Đồng thời, nhắc nhở qua dòng lệnh dưới đây.
- Dòng lệnh nhắc nhở
Nếu lựa chọn đồng ý Yes, phiên sẽ tiếp tục và lưu lại Khóa Máy chủ trong file known_hosts. Đây là file ẩn, lưu trữ mặc định. Khi Client kết nối trực tiếp với Máy chủ trong lần tiếp theo, Khóa Máy chủ sẽ được xác thực và kết nối.
Chức năng chính
Giao thức SSH đảm nhiệm 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 cần được đề cập như:
- Hỗ trợ truy cập từ xa vào các hệ thống, thiết bị sử dụng giao thức SSH.
- Cho phép di 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ý đảm bảo và hiệu quả thành phần hạ tầng mạng.
SSH có thể kết hợp với Phiên Terminal thay thế cho những chương trình Telnet có độ an toàn thấp.
Công nghệ mã hóa trong SSH
Lợi ích quan trọng nhất của SSH đó là khả năng mã hóa, truyền tải dữ liệu an toàn giữa thành phần Máy chủ và Khách hàng. Trong đó, Máy chủ là máy chủ từ xa cần kết nối với máy tính Khách hàng. Công nghệ mã hóa thông qua SSH có thể triển khai theo 3 phương thức khác nhau.
Mã hóa Bất đối xứng
Mã hóa Bất đối xứng là một phương pháp mã hóa sử dụng Khóa bí mật theo hai chiều, giải mã thông điệp cho Máy chủ và Khách hàng. Do đó, bất kỳ ai sở hữu khóa bí mật đều có thể giải mã thông điệp trong quá trình truyền tin.
- Mô tả quá trình mã hóa theo phương pháp Mã hóa Bất đối xứng
Khóa Bất đối xứng được áp dụng để mã hóa toàn bộ Phiên giao dịch diễn ra trong giao thức SSH. Trong đó, Máy chủ và Khách hàng có trách nhiệm tạo Khóa bí mật, hoàn toàn không được tiết lộ cho bên thứ ba.
Chính vì Khóa không truyền tải giữa Khách hàng và Máy chủ nên thuật toán rất an toàn. Cả hai máy tính có thể chia sẻ thông tin chung, sử dụng chúng để xác định Khóa bí mật. Bất kể máy tính nào có thể có được thông tin hay không, chúng đều không thể tìm ra khóa bí mật.
Tuy nhiên, cũng cần lưu ý rằng, Mã thông báo bí mật chỉ có hiệu lực trong một phiên SSH, nó được hình thành từ chứng thực Khách hàng. Khi tạo Khóa mới, toàn bộ Gói tin giữa hai máy tính cần trải qua quá trình mã hóa bởi Khóa riêng.
Quy trình này bao gồm cả giai đoạn cung cấp mật khẩu do người sử dụng.
Mã hóa Bất đối xứng Asymmetric Encryption
Khác với Mã hóa Đối xứng Symmetric Encryption, phương pháp Mã hóa Bất đối xứng Asymmetric Encryption lại sử dụng 2 khóa khác biệt để thực hiện mã hóa và giải mã. Bao gồm khóa công khai Public Key và khóa cá nhân Private Key, hình thành bộ khóa công khai-cá nhân.
- Miêu tả quy trình mã hóa theo phương pháp Mã hóa Bất đối xứng Asymmetric Encryption
Khóa công khai Public Key được công khai trên mọi thành phần liên quan. Tuy nhiên, nó cũng liên quan trực tiếp đến khóa cá nhân Private Key. Quan hệ này nhằm đảm bảo rằng Public Key gần như không thể tự mã hóa thông điệp và giải mã bất cứ nội dung nào đã được mã hóa bởi Private Key.
Trái lại, khóa cá nhân Private Key luôn được bảo mật, không được chia sẻ với bất kỳ bên thứ ba nào. Khóa cá nhân này có khả năng giải mã thông điệp. Do đó, khi một bên thành công trong việc giải mã thông điệp được gửi đến bằng Public Key, có nghĩa là bên đó sở hữu khóa cá nhân Private Key.
Tuy nhiên, cần lưu ý rằng Mã hóa Bất đối xứng Asymmetric Encryption không thể mã hóa toàn bộ SSH. Nó chỉ có thể sử dụng khi trao đổi thuật toán khóa. Trước khi bắt đầu phiên làm việc, cả hai bên trao đổi cần đồng ý tạo ra bộ khóa công khai-cá nhân trong thời gian ngắn. Đồng thời, chia sẻ khóa cá nhân để tạo ra một khóa bí mật chung.
Mỗi khi kết nối Đối xứng chính thức được thiết lập an toàn, máy chủ Server cũng sử dụng khóa công khai Public Key của Client. Từ đó khởi tạo, thay đổi và truyền đến Client để phục vụ quá trình xác thực. Trong trường hợp Client có thể giải mã thành công tin nhắn, điều đó có nghĩa là nó đang sở hữu khóa cá nhân Private Key. Phiên giao dịch SSH cũng bắt đầu cùng lúc.
Tiến trình băm dữ liệu
Băm một chiều là phương pháp mã hóa được sử dụng rộng rãi trong Kết nối Shell Bảo mật. Không giống với Mã hóa đối xứng và Mã hóa không đối xứng, Băm không được sử dụng để giải mã. Hầu hết các mã băm được tạo ra sau mỗi lần nhập dữ liệu và không thể bị khai thác. Do đó, Băm không thể được dùng để giải mã.
- Băm – phương pháp mã hóa được sử dụng rộng rãi trong Kết nối Shell Bảo mật
Thường thì, để tạo ra một giá trị băm, rất đơn giản chỉ cần qua một lần nhập dữ liệu. Tuy nhiên, chúng ta không thể tạo ra dữ liệu đầu vào thông qua giá trị băm đó. Nói cách khác, Client sẽ giữ dữ liệu đầu vào đó. Điều này có nghĩa là chỉ Client mới có thể tạo ra một mã băm mật mã hóa để xác định hai bên nhập vào.
Giao thức SSH cần sử dụng mã băm để 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ả mạo bằng bất kỳ phương pháp nào.
Cách xử lý các dạng mã hóa trong giao thức SSH
Trong bài viết tiếp theo trong loạt bài giải đáp về SSH là gì, FPT Cloud sẽ giúp bạn hiểu rõ 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 Khách hàng – Máy chủ để xác thực hai máy từ xa.
Giai đoạn Đàm phán Mã hóa Phiên
Để kết nối Khách hàng với Máy chủ qua TCP, Máy chủ cần cung cấp Giao thức Mã hóa và các phiên bản được hỗ trợ. Trong trường hợp Khách hàng có Giao thức 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 được tạo ra, chấp nhận Giao thức. Mỗi Máy chủ còn sử dụng Khóa công khai đối xứng để xác thực.
- Giai đoạn Đàm phán Mã hóa Phiên
Nếu đã thành công thiết lập, cả hai bên cần sử dụng thuật toán Diffie-Hellman Key Exchange Algorithm. Thanh toán này có nhiệm vụ tạo ra Khóa Đối xứng, đồng bộ quá trình giao tiếp sau này.
Dưới đây là phần tóm tắt cách thuật toán hoạt động:
- Máy khách và Máy chủ phải đồng ý với nguyên tắc sử dụng giá trị hạt giống.
- Cả hai bên cần lưu ý về thách thức mã hóa thực hiện bởi giá trị hạt giống thông qua một thuật toán đặc biệt. Đây là cơ chế tạo mã hóa, ảnh hưởng lớn đến giá trị hạt giống.
- Cả hai bên tạo ra Khóa Riêng.
- Khóa Riêng này được dùng chung với thuật toán mã hóa AES để tạo ra Khóa Công khai, được phân phối đến máy còn lại.
- Cả hai bên có quyền sử dụng Khóa Riêng. Trong khi đó, Khóa Công khai của máy còn lại sẽ kết hợp với Khóa Công khai để tạo ra một Khóa chung.
- Khi cả hai đã có Khóa Chia sẻ, quá trình mã hóa Đối xứng cho phiên SSH chính thức bắt đầu.
Giai đoạn xác 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 máy chủ, xác nhận thông tin trên hệ thống đăng nhập. Người dùng cần nhập tên đăng nhập trước, 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 mã hóa Đối xứng, không cho phép bất kỳ bên thứ ba nào thu thập.
Mật khẩu dù đã trải qua quá trình mã hóa qua mạng 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 đó thành công trong việc thu thập mật khẩu, tài khoản người dùng có thể bị chiếm đoạt dễ dàng. Theo nhiều chuyên gia bảo mật, người dùng nên sử dụng SSH Key Pair, một cặp khóa không đối xứng được sử dụng để xác thực thành viên mà không cần nhập mật khẩu.
Cách sử dụng SSH để kết nối với máy chủ Linux
Trong quá trình tìm hiểu khái niệm SSH là gì, bạn nên tham khảo cách sử dụng SSH để kết nối với máy chủ SSH.
Thiết lập máy chủ Linux chấp nhận kết nối
Đầu tiên để Server Linux kết nối với SSH, bạn cần 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.
- Thiết lập Server Linux chấp nhận liên kế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 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 lệnh “sudo apt-get upgrade” trong Terminal. Nếu cập nhật nâng cấp đã hoàn tất, bạn cần tiếp tục nhập 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, chúng ta nên bắt đầ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 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ể nâng cao 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 giá trị bất kỳ tại đây. Nếu muốn đăng nhập nhiều nhất 4 lần, bạn chỉ cần nhập lệnh “MaxAuthTries 4”.
Sau khi hoàn tất cài đặt công cụ OpenSSH, giao thức SSH Server sẽ được kích hoạt. Nếu bạn muốn kiểm tra xem giao thức đã hoạt động hay chưa, bạn cần nhập lệnh “sudo service ssh status”.
Trường hợp bạn không muốn chạy SSH, bạn chỉ cần nhập lệnh “sudo service ssh stop”.
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à cái gì nếu chưa phân biệt điểm khác nhau 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 truyền dữ liệu. Tuy nhiên, SSL/TLS thường kém bảo mật hơn so với SSH.
- Cả SSH và SSL/TLS đều là giao thức ứng dụng để xác thực giữa các bên
Nếu so sánh với giao thức SSL/TLS, SSH có thể coi là phiên bản rút gọn. Tuy nhiên, SSH lại có khả năng kết nối máy chủ và máy khách rất 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 tạo ra và duy trì phiên giả lập Terminal thông qua một Host từ xa.
Cả SSH và Telnet đều có một số đặc điểm giống nhau 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 sử dụng Public Key khi cần xác thực phiên Terminal, mã hóa lệnh đầu ra của mỗi phiên.
Còn với Telnet, giao thức này chủ yếu được sử dụng trong phiên 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í đối chiếu | Giao thức SSH | Giao thức Telnet |
Vị trí Cổng chạy | Cổng 22 | Cổng 23 |
Tính bảo mật | Rất bảo mật | Thấp bảo mật |
Cơ chế mã hoá | Bằng Khóa Công Khai | Truyền văn bản thuần |
Hệ thống phù hợp | Mạng Công Khai | Mạng Riêng |
Hệ điều hành tương thích | Tất cả hệ điều hành | Linux và Windows |
Bảng đối chiếu điểm khác biệt giữa SSH và Telnet
Một số vấn đề an ninh của SSH
Được đánh giá cao về tính bảo mật nhưng SSH vẫn tồn tại một số khuyết điểm bảo mật máy tính. Cụ thể là tình trạng khóa được lưu trữ trên Máy Khách dễ dàng tích tụ, yêu cầu phải có nhân viên Công Nghệ Thông Tin riêng để thực hiện quản lý, dọn dẹp.
Mặt khác, dữ liệu lưu trong tập tin 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ì vậy, mỗi doanh nghiệp cần thiết lập một quy trình lưu trữ, kiểm soát tập tin cụ thể.
Phía nhà phát triển nên cẩn thận khi kết hợp các lệnh hoặc chức năng SSH trong Kịch Bản hoặc các chương trình khác. Mặc dù không thể truyền lệnh SSH chứa ID người dùng cùng với mật khẩu nhưng quá trình này dễ tạo ra điểm yếu, tạo điều kiện cho hacker tấn công.
Khi nào nên sử dụng SSH?
- Trong mô hình TCP / IP, giao thức SSH sẽ hoạt động tại tầng thứ 4
Trong mô hình TCP / IP, giao thức SSH sẽ hoạt động tại tầng thứ 4. Nhiệm vụ của giao thức này là duy trì kết nối giữa máy chủ và máy khách. Bằng cách sử dụng một phương pháp mã hóa đặc biệt, giao thức này đảm bảo rằng dữ liệu được truyền đi an toàn. So với Telnet, Rlogin đã khắc phục nhược điểm về mặt bảo mật.
Áp dụng trong mọi trung tâm dữ liệu
Giao thức SSH được sử dụng rộng rãi trong hầu hết các trung tâm dữ liệu và luôn đi kèm với phần lớn các máy chủ Unix, Mac và Linux. Kết nối SSH là một ứng dụng phổ biến để xây dựng một giao thức bảo mật cho các hệ thống cục bộ và truy cập từ xa.
Ví dụ, nó có thể được sử dụng để xây dựng một cách an toàn để truy cập từ xa vào các nguồn tài nguyên hệ thống, cập nhật phần mềm, và nhiều tác vụ khác. Ngoài việc tạo ra một kênh an toàn cho truy cập vào máy cục bộ và truy cập từ xa, SSH cũng hỗ trợ quản lý các router, phần cứng máy chủ và một số nền tảng ảo hóa.
Kết nối với hệ thống máy chủ
SSH là giao thức kết nối với hệ thống máy chủ. Bằng cách này, người dùng có thể thực hiện các thay đổi và nâng cấp bằng cách sử dụng các công cụ hoặc terminal. SSH Key có thể được sử dụng để truy cập vào máy chủ theo cách tự động, đặc biệt là trong các tác vụ như script, sao lưu và 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ợ rất tốt cho việc áp dụng hệ thống đăng nhập một lần (SSO). Với việc này, người dùng có thể đăng nhập nhanh chóng và di chuyển giữa các tài khoản mà không cần phải mất 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à giao thức SSH còn tham gia trực tiếp vào quá trình mã hóa dữ liệu. Khi người dùng truyền file, duyệt web, nhập lệnh hoặc thực hiện các tác vụ khác, tất cả đều diễn ra một cách an toàn.
Xác thực thông tin
SSH kết hợp ID người dùng và mật khẩu để xác thực thông tin. Tuy nhiên, hiện nay, giao thức này thường được sử dụng chủ yếu để xác thực giữa các hệ thống máy chủ với nhau.
Như vậy người dùng cá nhân vẫn phải sử dụng ID người dùng và mật khẩu khi cần kết nối với Máy chủ từ xa.
Quá trình kết nối để thực hiện thông qua việc tạo một Cặp khóa công khai ứng với từng Máy chủ. Trong đó, mỗi Phiên làm việc lại yêu cầu hai Cặp khóa công khai. Một Khóa phục vụ xác thực máy cục bộ từ xa, Khóa còn lại đảm nhiệ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 EZTECH.