Giả định ta cần truy xuất 1 cổng trên máy remote, mà dịch vụ trên cổng đó lại chỉ nhận localhost, ví dụ như ta cần truy database bằng navicat qua cổng 3306 nhưng không muốn bật chức năng remote vì sẽ kém an toàn. Khi đó giải pháp đơn giản và hiệu quả nhất là SSH tunel
Cú pháp đơn giản để tạo đường hầm kết nối như sau:
ssh user@remote.host -L local_ip:local_port:remote_ip:remote_port
Trong đó local_ip và local_port là ip và port của máy bạn, trong trường hợp trỏ về máy local của bạn thì sẽ là
127.0.0.1:port
Ví dụ: ta tạo đường hầm để truy xuất dịch vụ mysql chạy port 3306 trên máy ở xa bằng ip local, port 3301, với -N là tùy chọn giữ phiên hiện tại chứ không kết ssh vào console máy remote:
ssh -N usera@remote.host -L 127.0.0.1:3301:127.0.0.1:3306
Trường hợp bạn muốn giữ phiên kết nối kể cả khi bạn đóng terminal (run in background), ta dùng tùy chọn -f
ssh -fN usera@remote.host -L 127.0.0.1:3301:127.0.0.1:3306
Trường hợp muốn ánh xạ nhiều port ta chỉ cần thêm vào phía sau, ví dụ:
ssh -N usera@remote.host -L 127.0.0.1:80:127.0.0.1:8080 \
-L 127.1.1.1:4443:127.0.0.1:443
Chỉ với câu lệnh đơn giản là ta đã có thể tạo đường hầm thông qua SSH, đặc biệt giao thức này rất an toàn do được mã hóa.