Giao thức ssh là gì
Show Bài viết được dịch từ nguồn và bổ sung thêm phần "làm thế nào để connect SSH to server?" 1. SSH là gì?
Mã hóa là một cách để ẩn một phần dữ liệu sao cho dữ liệu không thể đọc được trừ khi bạn biết cách giải mã hoặc giải mã dữ liệu. SSH được tạo ra như một cách giao tiếp an toàn, mã hóa dữ liệu thông qua một SSH thường được thực hiện bằng mô hình
Vậy sự khác biệt giữa SSH và HTTPS là gì? HTTPS cho phép trình duyệt web giao tiếp với server để hiển thị trang web. SSH cho phép Khi bạn connect đến 1 SSH server, bạn dùng shell để thực hiện. Shell này có thể là một terminal shell của Linux hoặc 1 command của Windows nơi mà bạn có thể thực thi commands trên máy mà bạn connect tới. Khi bạn sử dụng terminal hay command line là bạn đang giao tiếp với hệ điều hành. Với SHH, bạn có thể giao tiếp với hệ điều hành từ xa. SSH có thể truyền tải những gì?
2. SSH hoạt động thế nào?SSH chia dữ liệu thành một loạt các packets. Giống như bất kỳ packet nào, có một vài trường ở đầu. Ở trên cùng,
Packet sau đó được gửi đến server. Server giải mã gói tin và giải nén payload để trích xuất dữ liệu. Quá trình tương tự được thực hiện cho mọi gói được gửi qua connection. Để giữ an toàn cho SSH, SSH sử dụng ba loại kỹ thuật thao tác dữ liệu khác nhau tại các điểm khác nhau trong quá trình truyền. Ba kỹ thuật được sử dụng trong SSH là:
2.1. Symmetrical EncryptionSymmetrical Encryption là loại mã hóa trong đó một khóa có thể được sử dụng để mã hóa các messages được gửi đến đích và cũng giải mã các messages nhận được tại đích. Lược đồ mã hóa này còn được gọi là Cả hai thiết bị đều sử dụng cùng một khóa để mã hóa dữ liệu họ đang gửi và giải mã dữ liệu họ nhận được. Khóa bí mật dành riêng cho từng phiên SSH. Đây là loại mã hóa được sử dụng để mã hóa toàn bộ kết nối SSH để ngăn chặn các cuộc tấn công trung gian không thể đọc dữ liệu vì chúng không có khóa bí mật này. Một vấn đề phát sinh là trao đổi khóa ban đầu. Nếu một bên thứ ba đang lắng nghe trong quá trình trao đổi khóa, giờ đây họ sẽ biết khóa và có thể giải mã tất cả các tin nhắn của chúng ta. Một cách để ngăn chặn điều này là sử dụng Key Exchange Algorithm (Thuật toán trao đổi khóa). Một 2.2. Asymmetrical EncryptionMã hóa bất đối xứng là mã hóa thông qua việc sử dụng hai public key riêng biệt để mã hóa và giải mã, public key và private key. Public key có thể được chia sẻ với bất kỳ ai nhưng private key không bao giờ được chia sẻ. Một public key và private key tạo thành một cặp khóa. Một message được mã hóa bằng public key của máy chỉ có thể được giải mã bằng private key của nó. Public key được lưu trữ trên SSH server và private key được lưu trữ cục bộ trên SSH client. Nếu tôi cung cấp cho bạn public key của tôi, bạn có thể gửi tin nhắn cho tôi bằng cách mã hóa nó bằng public key của tôi. Sau đó tôi sẽ có thể đọc nó bằng cách giải mã nó bằng private key của mình. Ngay cả khi bên thứ ba quản lý để có được public key, họ sẽ không thể giải mã bất kỳ message nào vì họ không có private key. Miễn là private key không bao giờ được gửi qua và được bảo mật trên thiết bị của bạn, message của bạn không thể được giải mã. SSH sử dụng mã hóa bất đối xứng ở một vài nơi như thuật toán trao đổi khóa được sử dụng để thiết lập mã hóa đối xứng. Mã hóa bất đối xứng cũng được sử dụng làm khóa có thể được sử dụng để SSH vào server mà không cần sử dụng mật khẩu. Chúng ta trao đổi thuật toán để tạo các khóa (các phím màu vàng trong sơ đồ 1) được sử dụng để mã hóa và giải mã messages. Cả hai thiết bị đều tạo public key và private key và chia sẻ public key tương ứng. Sau đó,
chúng độc lập tạo một khóa đối xứng mới mà cả hai thiết bị sẽ sử dụng để mã hóa và giải mã messages. Cái này được thực hiện bằng cách sử dụng Khi bắt đầu Diffie Hellman key exchange, hai thiết bị cần thống nhất một vài thông số mà chúng sẽ sử dụng để trao đổi khóa:
Mỗi thiết bị sẽ sử dụng Nếu bạn muốn biết thêm về Diffie Hellman, hãy xem video này. Khi symmetric communication đã được thiết lập, server sẽ sử dụng public key của client để tạo 2.3. HashingHashing là một hình thức mã hóa khác được sử dụng để bảo mật các kết nối shell. Hashing cho phép bạn tạo chữ ký hoặc tóm tắt một bộ thông tin. Đó là một quá trình một chiều và dữ liệu hashed không bao giờ có nghĩa là được giải mã. Nhưng làm thế nào là hữu ích? Nếu một bên thứ ba quản lý để lừa client và host, họ có thể giả mạo messages. SSH sử dụng HMAC (Hash-based Message Authentication Codes). HMACs đảm bảo rằng các messages đã gửi được nhận ở dạng hoàn chỉnh và không thay đổi. Sử dụng hash function, mỗi message được truyền phải chứa một thứ gọi là MAC. MAC này là hash function được tạo từ khóa đối xứng, số thứ tự packet và nội dung message được gửi. Sử dụng ba phần tử này kết hợp làm đầu vào thành 1 hash function và hash function này sẽ xuất ra một số chuỗi không có ý nghĩa. Chuỗi này, hoặc chữ ký, được gửi đến host. Vậy, làm thế nào để server kiểm tra nếu tin nhắn đã bị giả mạo? Vì host có cùng thông tin (khóa đối xứng, số thứ tự gói và nội dung message), nên chúng có thể sử dụng cùng hàm function để tạo ra 1 hash function. Nếu hash function được tạo khớp với hash function nhận được, cái này sẽ xác minh chữ ký của client. Điều này hoạt động bởi vì nếu dữ liệu được thay đổi theo bất kỳ cách nào, thậm chí một cái gì đó nhỏ như viết hoa một chữ cái, hash function sẽ hoàn toàn khác. 3. Connect SSH to Server
Hy vọng tổng quan về SSH này giúp bạn hiểu rõ hơn về SSH, cách hoạt động và connect SSH với server. Thanks for reading!!! References: https://levelup.gitconnected.com/what-is-ssh-103f89e3e4b8 |