Secure Shell (SSH) là một giao thức dành cho truyền thông mạng an toàn được thiết kế để tương đối đơn giản và không tốn kém để thực hiện. Phiên bản ban đầu, SSH1 tập trung vào việc cung cấp cơ sở đăng nhập từ xa an toàn để thay thế TELNET và các chương trình đăng nhập từ xa khác không cung cấp bảo mật. SSH cũng cung cấp khả năng máy khách / máy chủ tổng quát hơn và có thể được sử dụng cho các chức năng mạng như truyền tệp và e-mail. Một phiên bản mới, SSH2, sửa một số lỗi bảo mật trong sơ đồ gốc. SSH2 được ghi nhận như một tiêu chuẩn được đề xuất trong IETF RFCs 4250 đến 4256.
SSH là gì ?
SSH là viết tắt của Secure Shell, là một giao thức mạng được sử dụng để truy cập từ xa vào một máy tính hoặc mạng máy tính. SSH được sử dụng để bảo mật kết nối để truy cập vào máy chủ hoặc mạng máy tính và thực hiện các tác vụ như quản trị hệ thống, cấu hình máy chủ, v.v. SSH cung cấp một cách an toàn và mã hóa dữ liệu truyền đi trong quá trình truy cập, đảm bảo rằng thông tin của bạn luôn được bảo mật và không bị truy cập bất hợp pháp.
Ứng dụng SSH trong hiện tại
Secure Shell (SSH) là một giao thức an toàn để truy cập tới một máy chủ hoặc hệ thống từ xa. Nó được sử dụng rộng rãi trong các hệ thống máy chủ và mạng, bao gồm các máy chủ web, máy chủ email, máy chủ FTP, vv.
Ứng dụng của SSH hiện nay bao gồm:
- Truy cập từ xa: SSH cho phép bạn truy cập vào máy chủ từ xa mà không cần một kết nối mạng bảo mật.
- Quản lý máy chủ: SSH cung cấp một cách an toàn để quản lý các máy chủ và hệ thống mạng.
- Thay thế Telnet: SSH cung cấp một cách an toàn để thay thế Telnet, một giao thức không an toàn để truy cập vào máy chủ từ xa.
- Sao chép dữ liệu: SSH cung cấp một cách an toàn để sao chép dữ liệu giữa các máy chủ và hệ thống mạng.
Với những tính năng an toàn và tiện ích mà SSH cung cấp, nó là một công cụ quan trọng đối với những người sử dụng máy chủ và mạng.
Các bài viết liên quan:
Các ứng dụng máy khách và máy chủ SSH có sẵn rộng rãi cho hầu hết các hệ điều hành. Nó đã trở thành phương pháp được lựa chọn để đăng nhập từ xa và đường hầm X và đang nhanh chóng trở thành một trong những ứng dụng phổ biến nhất cho công nghệ mã hóa bên ngoài các hệ thống nhúng.
Các thành phần của SSH
SSH được tổ chức dưới dạng ba giao thức thường chạy trên TCP:
Transport Layer Protocol: Cung cấp xác thực máy chủ, bảo mật dữ liệu, và tính toàn vẹn của dữ liệu với tính bảo mật chuyển tiếp (tức là, nếu một khóa bị xâm phạm trong một phiên, kiến thức không ảnh hưởng đến bảo mật của các phiên trước đó). Lớp truyền tải có thể tùy chọn cung cấp tính năng nén.
- User Authentication Protocol: Xác thực người dùng với máy chủ.
- Connection Protocol: Ghép nhiều kênh truyền thông logic qua một kết nối SSH cơ bản.
Transport Layer Protocol trong SSH
HOST KEYS
Xác thực máy chủ xảy ra ở lớp truyền tải, dựa trên máy chủ sở hữu cặp khóa công khai / riêng tư. Một máy chủ có thể có nhiều khóa máy chủ sử dụng nhiều thuật toán mã hóa bất đối xứng khác nhau. Nhiều máy chủ có thể chia sẻ cùng một khóa máy chủ. Trong mọi trường hợp, khóa máy chủ lưu trữ được sử dụng trong quá trình trao đổi khóa để xác thực danh tính của máy chủ. Để có thể thực hiện được điều này, máy khách phải có kiến thức trước về khóa máy chủ công cộng của máy chủ. RFC 4251 chỉ ra hai mô hình tin cậy thay thế có thể được sử dụng:
- Máy khách có cơ sở dữ liệu cục bộ liên kết từng tên máy chủ (do người dùng nhập) với khóa máy chủ công cộng tương ứng. Phương pháp này không yêu cầu cơ sở hạ tầng được quản lý tập trung và không có sự phối hợp của bên thứ ba. Nhược điểm là cơ sở dữ liệu của các liên kết tên-khóa có thể trở thành gánh nặng để duy trì.
- Liên kết tên với khóa máy chủ được chứng nhận bởi một tác giả chứng nhận đáng tin cậy (CA). Máy khách chỉ biết khóa gốc của CA và có thể xác minh tính hợp lệ của tất cả các khóa máy chủ được chứng nhận bởi các CA được chấp nhận. Giải pháp thay thế này giúp giảm bớt vấn đề bảo trì, vì lý tưởng, chỉ một khóa CA duy nhất cần được lưu trữ an toàn trên máy khách. Mặt khác, mỗi khóa máy chủ phải được chứng nhận phù hợp bởi cơ quan trung ương trước khi có thể ủy quyền.
PACKET EXCHANGE
Hình trên minh họa chuỗi sự kiện trong Giao thức lớp truyền tải SSH. Đầu tiên, máy khách thiết lập kết nối TCP tới máy chủ. Điều này được thực hiện thông qua giao thức TCP và không phải là một phần của Giao thức tầng truyền tải. Khi kết nối được thiết lập, máy khách và máy chủ trao đổi dữ liệu, được gọi là gói, trong trường dữ liệu của một phân đoạn TCP. Mỗi gói có định dạng sau (Hình 16.10).
- Packet length: Độ dài của gói tính bằng byte, không bao gồm độ dài gói và các trường MAC.
- Padding length: Chiều dài của trường phần đệm ngẫu nhiên.
- Payload: Nội dung hữu ích của gói tin. Trước khi thương lượng thuật toán, trường này không được nén. Nếu quá trình nén được thỏa thuận, thì trong các gói tiếp theo, trường này sẽ được nén.
- Random padding: Khi thuật toán mã hóa đã được thương lượng, trường này sẽ được thêm vào. Nó chứa các byte đệm ngẫu nhiên để tổng chiều dài của gói tin (không bao gồm trường MAC) là bội số của kích thước khối mật mã, hoặc 8 bytes đối với mật mã dòng.
- Random padding: Nếu xác thực tin nhắn đã được thương lượng, trường này chứa giá trị MAC. Giá trị MAC được tính trên toàn bộ gói cộng với số thứ tự, không bao gồm trường MAC. Số thứ tự là một chuỗi gói 32 bit ngầm định được khởi tạo để
0 cho gói đầu tiên và tăng dần cho mỗi gói. Số thứ tự không được bao gồm trong gói được gửi qua kết nối TCP.
Khi một thuật toán mã hóa đã được thương lượng, toàn bộ gói tin (không bao gồm trường MAC) sẽ được mã hóa sau khi giá trị MAC được tính toán.
Trao đổi gói ở Lớp truyền tải SSH bao gồm một chuỗi các bước (Hình 16.9). Bước đầu tiên, trao đổi chuỗi nhận dạng, bắt đầu bằng việc khách hàng gửi một gói tin với chuỗi nhận dạng có dạng:
SSH-protoversion-softwareversion SP comments CR LF
trong đó SP, CR và LF lần lượt là ký tự khoảng trắng, ký tự xuống dòng và nguồn cấp dữ liệu dòng. Ví dụ về chuỗi hợp lệ là SSH-2.0-billSSH_3.6.3q3 <CR> <LF>. Máy chủ phản hồi bằng chuỗi nhận dạng của riêng nó. Các chuỗi này được sử dụng trong trao đổi khóa Diffie-Hellman.
Algorithm negotiation.
Mỗi bên gửi một SSH_MSG_KEXINIT danh sách các thuật toán được hỗ trợ theo thứ tự ưu tiên cho người gửi. Có một danh sách cho mỗi loại thuật toán mật mã. Các thuật toán bao gồm trao đổi khóa, mã hóa, thuật toán MAC và thuật toán nén. Bảng 16.3 cho thấy các tùy chọn có thể cho phép đối với mã hóa, MAC và nén. Đối với mỗi danh mục, thuật toán được chọn là thuật toán đầu tiên trong danh sách của khách hàng cũng được hỗ trợ bởi máy chủ.
Key exchange.
Đặc điểm kỹ thuật cho phép các phương pháp trao đổi khóa thay thế, nhưng hiện tại, chỉ có hai phiên bản trao đổi khóa Diffie-Hellman được chỉ định. Cả hai phiên bản đều được định nghĩa trong RFC 2409 và chỉ yêu cầu một gói ở mỗi hướng. Các bước sau đây có liên quan đến việc trao đổi.
Trong điều này, C là khách hàng; S là máy chủ; p là một số nguyên tố an toàn lớn; g là bộ tạo cho một nhóm con của GF (p); q là bậc của nhóm con; V_S là chuỗi nhận dạng của S; V_C là chuỗi nhận dạng của C; K_S là khóa máy chủ công cộng của S; I_C là bản tin SSH_MSG_KEXINIT của C và I_S là bản tin SSH_MSG_KEXINIT của S đã được trao đổi trước khi phần này bắt đầu. Các giá trị của p, g và q được biết đến với cả máy khách và máy chủ do kết quả của quá trình thương lượng lựa chọn thuật toán. Hàm băm hash () cũng được quyết định trong quá trình thương lượng thuật toán.
- C tạo ra một số ngẫu nhiên x (1 < x < q) và tính e = gx mod p. C gửi e cho S.
- S tạo ra một số ngẫu nhiên y (0 < y < q) và tính f = gy mod p.
S nhận e. Nó tính K = ey mod p, H = hash (V_C|| V_S || I_C || I_S ||
K_S || e || f ||K), và chữ ký s trên H bằng khóa máy chủ riêng của nó. S gửi
(K_S|| f||s)đến C. Thao tác ký có thể liên quan đến phép băm thứ hai hoạt động
* = Bắt buộc
** = Được đề xuất
- C xác minh rằng K_S thực sự là khóa máy chủ cho S (ví dụ: sử dụng chứng chỉ hoặc cơ sở dữ liệu cục bộ). C cũng được phép chấp nhận khóa mà không cần xác minh; tuy nhiên, làm như vậy sẽ khiến giao thức không an toàn trước các cuộc tấn công đang hoạt động (nhưng có thể là mong muốn vì những lý do thực tế trong ngắn hạn ở nhiều môi trường).
Sau đó C tính K = fx mod p, H = hash (V_C || V_S ||
I_C || I_S || K_S || e || f || K), và xác minh chữ ký của H.
Kết quả của các bước này, hai bên giờ đây chia sẻ một khóa chính K. Ngoài ra, máy chủ đã được xác thực với máy khách, vì máy chủ đã sử dụng khóa chính của nó để ký một nửa của sàn giao dịch Diffie-Hellman. Cuối cùng, giá trị băm H đóng vai trò là mã định danh phiên cho kết nối này. Sau khi được tính toán, mã định danh phiên không bị thay đổi, ngay cả khi việc trao đổi khóa được thực hiện lại cho kết nối này để lấy các khóa mới.
The end of key exchange
Được báo hiệu bằng việc trao đổi SSH_MSG_NEWKEYS gói tin. Tại thời điểm này, cả hai bên có thể bắt đầu sử dụng các khóa được tạo ra từ K, như đã đề cập sau đó.
Bước cuối cùng là yêu cầu dịch vụ. Máy khách gửi một gói SSH_MSG_ SERVICE_REQUEST để yêu cầu Xác thực Người dùng hoặc Giao thức Kết nối. Sau đó, tất cả dữ liệu được trao đổi dưới dạng tải trọng của gói Lớp truyền tải SSH, được bảo vệ bằng mã hóa và MAC.
KEY GENERATION
Các khóa được sử dụng để mã hóa và MAC (và bất kỳ IV cần thiết nào) được tạo từ khóa bí mật được chia sẻ K, giá trị băm từ trao đổi khóa H và mã định danh phiên, bằng H trừ khi có một lần trao đổi khóa tiếp theo sau lần trao đổi khóa ban đầu. Các giá trị được tính như sau.
- Máy khách IV ban đầu đến máy chủ: HASH (K || H || “A” || session_id)
- Máy chủ IV ban đầu đến máy khách: HASH (K || H || “B” || session_id)
- Máy khách khóa mã hóa tới máy chủ: HASH (K || H || “C” || session_id)
- Máy chủ khóa mã hóa cho máy khách: HASH (K || H || “D” || session_id)
- Máy khách khóa toàn vẹn cho máy chủ: HASH (K || H || “E” || session_id)
- Máy chủ khóa toàn vẹn cho máy khách: HASH (K || H || “F” || session_id)
trong đó HASH () là hàm băm được xác định trong quá trình thương lượng thuật toán.
User Authentication Protocol
Giao thức xác thực người dùng cung cấp phương tiện mà máy khách được xác thực với máy chủ.
MESSAGE TYPES AND FORMATS
Ba loại thông báo luôn được sử dụng trong Giao thức xác thực người dùng. Yêu cầu xác thực từ máy khách có định dạng:
trong đó tên người dùng là nhận dạng ủy quyền mà khách hàng đang yêu cầu, tên dịch vụ là cơ sở mà khách hàng đang yêu cầu quyền truy cập (thường là Giao thức kết nối SSH) và tên phương thức là phương thức xác thực đang được sử dụng trong yêu cầu này. Byte đầu tiên có giá trị thập phân 50, được hiểu là
SSH_MSG_USERAUTH_REQUEST.
Nếu máy chủ (1) từ chối yêu cầu xác thực hoặc (2) chấp nhận yêu cầu nhưng yêu cầu một hoặc nhiều phương pháp xác thực bổ sung, máy chủ sẽ gửi thông báo có định dạng:
trong đó danh sách tên là danh sách các phương pháp có thể tiếp tục hộp thoại một cách hiệu quả. Nếu máy chủ chấp nhận xác thực, nó sẽ gửi một thông báo byte đơn: SSH_MSG_ USERAUTH_SUCCESS (52).
MESSAGE EXCHANGE
Trao đổi tin nhắn bao gồm các bước sau.
- Máy khách gửi SSH_MSG_USERAUTH_REQUEST không có phương thức nào được yêu cầu.
- Máy chủ kiểm tra để xác định xem tên người dùng có hợp lệ hay không. Nếu không, máy chủ trả về SSH_MSG_USERAUTH_FAILURE với giá trị thành công một phần là false. Nếu tên người dùng hợp lệ, máy chủ sẽ chuyển sang bước 3.
- Máy chủ trả về SSH_MSG_USERAUTH_FAILURE cùng với danh sách một hoặc nhiều phương pháp xác thực sẽ được sử dụng.
- Máy khách chọn một trong các phương pháp xác thực được chấp nhận và gửi SSH_MSG_USERAUTH_REQUEST với tên phương thức đó và các trường dành riêng cho phương thức bắt buộc. Tại thời điểm này, có thể có một chuỗi trao đổi để thực hiện phương pháp.
- Nếu xác thực thành công và yêu cầu nhiều phương pháp xác thực hơn, máy chủ sẽ chuyển sang bước 3, sử dụng giá trị thành công một phần của true. Nếu xác thực không thành công, máy chủ sẽ tiếp tục bước 3, sử dụng giá trị thành công một phần là false.
- Khi tất cả các phương pháp xác thực được yêu cầu thành công, máy chủ sẽ gửi Thông báo SSH_MSG_USERAUTH_SUCCESS và Giao thức xác thực đã kết thúc.
AUTHENTICATION METHODS
Máy chủ có thể yêu cầu một hoặc nhiều phương pháp xác thực sau.
- publickey: Chi tiết của phương pháp này phụ thuộc vào thuật toán khóa công khai được chọn. Về bản chất, máy khách gửi một thông báo đến máy chủ có chứa khóa công khai của máy khách, với thông báo được ký bởi khóa riêng của máy khách. Khi máy chủ nhận được thông báo này, nó sẽ kiểm tra xem khóa được cung cấp có thể chấp nhận để xác thực hay không và nếu có, nó sẽ kiểm tra xem chữ ký có chính xác hay không.
- password: Máy khách gửi một tin nhắn có chứa mật khẩu văn bản rõ, được bảo vệ bằng mã hóa bởi Giao thức lớp truyền tải.
- hostbased: Xác thực được thực hiện trên máy chủ của máy khách chứ không phải chính máy khách. Do đó, một máy chủ hỗ trợ nhiều máy khách sẽ cung cấp xác thực cho tất cả các máy khách của nó. Phương pháp này hoạt động bằng cách yêu cầu máy khách gửi một ký hiệu được tạo bằng khóa riêng của máy khách. Do đó, thay vì xác minh trực tiếp danh tính của người dùng, máy chủ SSH xác minh danh tính của máy khách — và sau đó tin máy chủ khi nó cho biết người dùng đã xác thực ở phía máy khách.
Connection Protocol
Giao thức kết nối SSH chạy trên Giao thức lớp truyền tải SSH và giả định rằng một kết nối xác thực an toàn đang được sử dụng.2 Xác thực an toàn đó
2RFC 4254, Giao thức kết nối Secure Shell (SSH), nói rằng Giao thức kết nối chạy trên Giao thức tầng truyền tải và Giao thức xác thực người dùng. RFC 4251, Kiến trúc giao thức SSH, nói rằng Giao thức kết nối chạy trên Giao thức xác thực người dùng. Trên thực tế, Giao thức kết nối chạy trên Giao thức tầng truyền tải, nhưng giả định rằng Giao thức xác thực người dùng đã được gọi trước đó.
kết nối, được gọi là đường hầm, được Giao thức kết nối sử dụng để ghép kênh số kênh logic.
CHANNEL MECHANISM
Tất cả các loại giao tiếp sử dụng SSH, chẳng hạn như thiết bị đầu cuối phiên, được hỗ trợ bằng cách sử dụng các kênh riêng biệt. Một trong hai bên có thể mở kênh. Đối với mỗi kênh, mỗi bên liên kết một số kênh duy nhất, số kênh này không cần giống nhau ở cả hai đầu. Các kênh được kiểm soát luồng bằng cơ chế cửa sổ. Không có dữ liệu nào có thể được gửi đến một kênh cho đến khi nhận được thông báo cho biết rằng không gian cửa sổ còn trống.
Tuổi thọ của kênh diễn ra qua ba giai đoạn: mở kênh, truyền dữ liệu và đóng kênh.
Khi một trong hai bên muốn mở một kênh mới, bên đó sẽ phân bổ một số cục bộ cho kênh và sau đó gửi một thông báo có dạng:
byte SSH_MSG_CHANNEL_OPEN
string channel type
uint32 sender channel
uint32 initial window size
uint32 maximum packet size
…. channel type specific data follows
trong đó uint32 có nghĩa là số nguyên 32 bit không dấu. Loại kênh xác định ứng dụng cho kênh này, như được mô tả sau đó. Kênh người gửi là số kênh địa phương. Kích thước cửa sổ ban đầu chỉ định bao nhiêu byte dữ liệu kênh có thể được gửi đến người gửi thư này mà không cần điều chỉnh cửa sổ. Kích thước gói tối đa chỉ định kích thước tối đa của một gói dữ liệu riêng lẻ có thể được gửi đến người gửi. Ví dụ, người ta có thể muốn sử dụng các gói nhỏ hơn cho các kết nối liên hoạt động để có được phản hồi tương tác tốt hơn trên các liên kết chậm.
Nếu mặt điều khiển từ xa có thể mở kênh, nó sẽ trả về SSH_MSG_ Tin nhắn CHANNEL_OPEN_CONFIRMATION, bao gồm số kênh người gửi, số kênh người nhận, giá trị kích thước cửa sổ và gói cho lưu lượng đến. Nếu không, phía điều khiển từ xa sẽ trả về thông báo SSH_MSG_CHANNEL_ OPEN_FAILURE với mã lý do cho biết lý do không thành công.
Khi một kênh được mở, quá trình truyền dữ liệu được thực hiện bằng SSH_MSG_ Tin nhắn CHANNEL_DATA, bao gồm số kênh của người nhận và một khối dữ liệu. Các thông báo này, theo cả hai hướng, có thể tiếp tục miễn là kênh còn mở.
Khi một trong hai bên muốn đóng một kênh, nó sẽ gửi một SSH_MSG_ Tin nhắn CHANNEL_CLOSE, bao gồm số kênh của người nhận.
CHANNEL TYPES
Bốn loại kênh được công nhận trong thông số kỹ thuật Giao thức kết nối SSH.
- session: Thực hiện từ xa một chương trình. Chương trình có thể là một trình bao, mộtứng dụng như truyền tệp hoặc e-mail, lệnh hệ thống hoặc một số hệ thống con tích hợp sẵn. Khi một kênh phiên được mở, các yêu cầu tiếp theo được sử dụng để bắt đầu chương trình từ xa.
- x11: Hệ thống này đề cập đến Hệ thống cửa sổ X, một hệ thống phần mềm máy tính và giao thức công việc mạng cung cấp giao diện người dùng đồ họa (GUI) cho các máy tính nối mạng. X cho phép các ứng dụng chạy trên máy chủ mạng nhưng được hiển thị trên máy tính để bàn.
- forwarded-tcpip: Đây là chuyển tiếp cổng từ xa, như được giải thích trong phần phụ tiếp theo.
- direct-tcpip: Đây là chuyển tiếp cổng cục bộ, như được giải thích trong phần phụ tiếp theo.
PORT FORWARDING
Một trong những tính năng hữu ích nhất của SSH là chuyển tiếp cổng. Về bản chất, chuyển tiếp cổng cung cấp khả năng chuyển đổi bất kỳ kết nối TCP không an toàn nào thành kết nối SSH an toàn. Đây cũng được gọi là đường hầm SSH. Chúng ta cần biết cổng là gì trong bối cảnh này. Cổng là định danh của người dùng TCP. Vì vậy, bất kỳ ứng dụng nào chạy trên TCP đều có số cổng. Lưu lượng TCP đến được phân phối đến ứng dụng thích hợp trên cơ sở số cổng. Một ứng dụng có thể sử dụng nhiều số cổng. Ví dụ: đối với Giao thức chuyển thư đơn giản(SMTP), phía máy chủ thường lắng nghe trên cổng 25, do đó, một yêu cầu SMTP đến sử dụng TCP và chuyển dữ liệu đến cổng đích 25.TCP nhận ra rằng đây là địa chỉ máy chủ SMTP và định tuyến dữ liệu đến ứng dụng máy chủ SMTP.
Hình dưới minh họa khái niệm cơ bản đằng sau chuyển tiếp cổng. Chúng tôi có một ứng dụng khách được xác định bằng số cổng x và một ứng dụng máy chủ được xác định bằng số cổng y. Tại một số điểm, ứng dụng khách gọi thực thể TCP cục bộ và yêu cầu kết nối với máy chủ từ xa trên cổng y. Thực thể TCP cục bộ thương lượng kết nối TCP với thực thể TCP từ xa, sao cho kết nối liên kết cổng cục bộ x với cổng y từ xa.
Để bảo mật kết nối này, SSH được cấu hình để Giao thức lớp truyền tải SSH thiết lập kết nối TCP giữa các thực thể máy khách và máy khách SSH với số cổng TCP tương ứng là a và b. Một đường hầm SSH an toàn được thiết lập qua kết nối TCP này. Lưu lượng truy cập từ máy khách tại cổng x được chuyển hướng đến địa phương
(b) Connection via SSH tunnel
Thực thể SSH và di chuyển qua đường hầm nơi thực thể SSH từ xa cung cấp dữ liệu đến ứng dụng máy chủ trên cổng y. Giao thông theo hướng khác cũng được chuyển hướng tương tự.
SSH hỗ trợ hai loại chuyển tiếp cổng: chuyển tiếp cục bộ và chuyển tiếp từ xa. Local forwarding cho phép khách hàng thiết lập quy trình “hijacker”. Điều này sẽ chặn lưu lượng cấp ứng dụng đã chọn và chuyển hướng nó từ một kết nối TCP không an toàn đến một đường hầm SSH an toàn. SSH được cấu hình để lắng nghe trên các cổng đã chọn. SSH lấy tất cả lưu lượng bằng cách sử dụng một cổng đã chọn và gửi nó qua một đường hầm SSH. Ở phía bên kia, máy chủ SSH gửi lưu lượng đến đến cổng đích được ứng dụng khách phân biệt.
Ví dụ sau sẽ giúp làm rõ chuyển tiếp địa phương. Giả sử bạn có một ứng dụng e-mail trên máy tính để bàn và sử dụng nó để nhận e-mail từ máy chủ thư của bạn qua Giao thức Bưu điện (POP). Số cổng được chỉ định cho POP3 là cổng 110. Chúng tôi có thể bảo mật lưu lượng này theo cách sau:
- Máy khách SSH thiết lập kết nối với máy chủ từ xa.
- Chọn một số cổng cục bộ không sử dụng, chẳng hạn 9999 và định cấu hình SSH để chấp nhận lưu lượng từ cổng này dành cho cổng 110 trên máy chủ.
- Máy khách SSH thông báo cho máy chủ SSH tạo kết nối đến đích, trong trường hợp này là cổng máy chủ thư 110.
- Máy khách lấy bất kỳ bit nào được gửi đến cổng cục bộ 9999 và gửi chúng đến máy chủ bên trong phiên SSH được mã hóa. Máy chủ SSH giải mã các bit đếnvà gửi bản rõ đến cổng 110.
- Theo hướng khác, máy chủ SSH lấy bất kỳ bit nào nhận được trên cổng 110 và gửi chúng bên trong phiên SSH trở lại máy khách, người này sẽ giải mã và gửi chúng đến quy trình được kết nối với cổng 9999.
Với tính năng chuyển tiếp từ xa, máy khách SSH của người dùng hoạt động thay mặt cho máy chủ. Máy khách nhận lưu lượng với số cổng đích nhất định, đặt lưu lượng vào đúng cổng và gửi đến đích mà người dùng chọn. Sau đây là một ví dụ điển hình về chuyển tiếp từ xa. Bạn muốn truy cập một máy chủ tại nơi làm việc từ máy tính tại nhà của mình. Vì máy chủ công việc nằm sau tường lửa, nó sẽ không chấp nhận yêu cầu SSH từ máy tính tại nhà của bạn. Tuy nhiên, từ nơi làm việc, bạn có thể thiết lập đường hầm SSH bằng cách sử dụng chuyển tiếp từ xa. Điều này liên quan đến các bước tiếp theo.
- Từ máy tính làm việc, hãy thiết lập kết nối SSH với máy tính ở nhà của bạn. Tường lửa sẽ cho phép điều này, bởi vì nó là một kết nối gửi đi được bảo vệ.
- Định cấu hình máy chủ SSH để lắng nghe trên một cổng cục bộ, chẳng hạn như 22 và để cung cấp dữ liệu qua kết nối SSH được định hướng tới cổng từ xa, chẳng hạn 2222.
- Bây giờ bạn có thể truy cập vào máy tính tại nhà của mình và định cấu hình SSH để chấp nhận lưu lượng truy cập trên cổng 2222.
- Bây giờ bạn có một đường hầm SSH có thể được sử dụng để đăng nhập từ xa vào máy chủ công việc.