SSH, viết tắc của từ Secure Shell, là một dạng kết nối bảo mật rất được ưa chuộng để kết nối đến server hoặc shell (thay cho telnet) hiện nay. Trong topic này mình xin không đề cập sâu vào SSH mà chỉ muốn nói đến SSH tunnel (tạm dịch là đường hầm kết nối bảo mật).
Ứng dụng phổ biến nhất của SSH tunnel chính là port forwarding (chuyển tiếp cổng). Điều này được SSH tunnel thực hiện bằng cách truyền lại tín hiệu từ 1 port trên 1 node đến 1 node khác tại 1 port trên node đó thông qua 1 kết nối bảo mật. Có vẻ như giải thích như vậy sẽ làm cho các bạn thấy khó hiểu. Mình xin lấy 1 thí dụ đẻ tiện cho việc diễn giải.
Giả sử bạn có 1 web server chạy ở máy A tại port 80. Vì 1 lý do gì đó, bạn cấu hình cho web server này chỉ có thể được truy cập bằng các máy trong mạng nội bộ. Cách đơn giản nhất là bạn không mở port 80 trên trên router và không sử dụng NAT để chuyển yêu cầu đến port này đén máy A. Tuy nhiên nếu bạn ở 1 máy B, nằm ngoài mạng nội bộ, và muốn sử dụng Internet để truy cập vô web của máy A. Bạn sẽ làm như thế nào? Một giải pháp an toàn đó chính là sử dụng SSH tunnel. Khi đó bạn tạo 1 kết nối từ máy B đến máy A (dĩ nhiên máy A fải cài SSH server) bắng SSH và map port 80 của máy A về port 80 (hoặc bất kỳ) của máy B. Lúc này khi bạn truy cập vô port 80 của máy B, SSH sẽ chuyển yêu cầu về port 80 của máy A và chuyển phản hồi từ máy A về mày B. Quá siêu!