Nếu bạn may mắn có nhà cung cấp dịch vụ Internet (ISP) cấp địa chỉ IP riêng, bạn có thể thiết lập máy chủ tại nhà và đưa nó ra Internet bằng cách thêm vài quy tắc port forwarding vào router. Nhưng nếu ISP bắt bạn chia sẻ IP với hàng xóm, port forwarding sẽ không giúp. Nhà cung cấp khác đơn giản chặn kết nối đến qua quy tắc tường lửa.
Bạn có thể bỏ qua tất cả hạn chế này với sự giúp đỡ của một máy chủ ảo riêng (VPS). Bất cứ thứ gì cũng được, ngay cả khi nó có ít hơn 512MB RAM, vì nó chỉ cần chuyển hướng lưu lượng mạng. Điều này rất nhẹ trên CPU và RAM. Máy chủ sẽ nhận kết nối đến và chuyển hướng chúng đến máy tính của bạn thông qua cái gọi là "reverse SSH tunnel" (đường hầm SSH ngược). Cách này bạn có thể thiết lập bất kỳ loại máy chủ tại nhà nào, với chi phí hàng tháng rất nhỏ.
Hãy tưởng tượng bạn tạo máy chủ NextCloud để tải lên/đồng bộ file. Bạn được quyền riêng tư khi file ở máy chủ tại nhà, và sau đó mua ổ cứng 6TB để có tất cả không gian bạn cần. Bạn chỉ phải trả hóa đơn điện hàng tháng và dưới $5/tháng cho VPS. Đó rẻ hơn nhiều so với hóa đơn hàng tháng cho máy chủ với 6TB không gian.
Lưu ý: Điều này chỉ hoạt động cho chuyển hướng lưu lượng mạng TCP. TCP được dùng bởi các thứ như web server (cổng 80/tcp). UDP được dùng bởi một số (không phải tất cả) game server, ví dụ Counter Strike (cổng 27015/UDP). UDP tunneling có thể, nhưng với một số "hack", có thể là chủ đề cho hướng dẫn tương lai.
Windows 10 giờ có sẵn SSH Client tích hợp
Không cần dùng PuTTY nữa để khởi tạo kết nối SSH. Thực tế, cho hướng dẫn này bạn sẽ dùng client tích hợp này để thiết lập đường hầm. Đọc hướng dẫn về OpenSSH client của Windows 10 nếu bạn chưa quen.
Chuẩn bị VPS để chuyển đường hầm kết nối
Tạo VPS với nhà cung cấp yêu thích, như DigitalOcean, Linode, Vultr, hoặc bất cứ thứ gì bạn thích. Điều quan trọng nhất là chọn vị trí máy chủ gần bạn nhất để giảm độ trễ mạng. Cố gắng thiết lập máy chủ sao cho bạn đăng nhập trực tiếp vào tài khoản root, ưu tiên dùng SSH key vì an toàn hơn. Điều này bắt buộc nếu bạn muốn máy chủ lắng nghe kết nối đến trên cổng dưới 1024, gọi là cổng đặc quyền.
Mở command prompt (hoặc terminal nếu bạn trên Linux), và đăng nhập vào máy chủ qua SSH.
Chỉnh sửa cài đặt OpenSSH server:
nano /etc/ssh/sshd_config
Nếu bạn không đăng nhập bằng root mà user thường, bạn cần dùng lệnh này, nếu không bạn không lưu được file:
sudo nano /etc/ssh/sshd_config
Cuộn xuống cho đến khi tìm thấy biến tên "GatewayPorts". Dòng có thể trông như: #GatewayPorts no. Xóa "#" đầu (để uncomment) và đổi dòng thành GatewayPorts yes.

Nếu không tìm thấy dòng, chỉ cần cuộn xuống cuối và thêm dòng:
GatewayPorts yes
Nhấn Ctrl + X, rồi y, cuối cùng Enter để lưu file.
Tải lại SSH daemon để nó nhận cài đặt mới.
systemctl reload ssh.service
Thoát phiên SSH.
exit
Cách thiết lập Reverse SSH Tunnel
Tham số lệnh giống nhau trên Linux, Windows, và cả BSD. Cú pháp chung:
ssh -R remote_port:host:localport your_username@IP-of-server
remote_portnói với máy chủ chuyển hướng kết nối đến nó trên cổng đó.hostnói với máy chủ địa chỉ IP kết nối nên được chuyển hướng đến.127.0.0.1sẽ dùng ở đây để chuyển hướng đến máy của bạn.localportchỉ định cổng gói tin nên được chuyển hướng đến. Ở đây, bạn nên đặt số cổng ứng dụng cài trên máy cục bộ lắng nghe.
Ví dụ, để chuyển tất cả kết nối đến cổng 80 (trên máy chủ) và gửi chúng đến cổng 8080 trên máy cục bộ, lệnh sẽ là:
ssh -R 80:127.0.0.1:8080 root@203.0.113.1
Giả sử bạn có web server như Apache hoặc Nginx lắng nghe cổng 8080 trên máy cục bộ. Nhưng nếu Apache/Nginx lắng nghe cổng mặc định 80, thì không vấn đề dùng cùng cổng 80 hai lần trong lệnh trước (vì chúng tham chiếu cổng 80 trên máy chủ khác nhau).
ssh -R 80:127.0.0.1:80 root@203.0.113.1
Lúc này, nếu ai đó nhập địa chỉ IP của VPS vào thanh địa chỉ trình duyệt, kết nối sẽ được chuyển hướng và phục vụ bởi máy cục bộ của bạn.

Trong hình trên, dùng web server đơn giản cho Chrome lắng nghe cổng 8887 mặc định. Bạn có thể thử thiết lập này bằng cách cài app và dùng lệnh như trong hình.
Có giá trị nhắc rằng để giữ đường hầm hoạt động, phiên SSH của bạn phải duy trì hoạt động. Để đóng đường hầm, gõ exit trong cửa sổ terminal/command prompt.
Kết luận
Như bạn thấy, tạo reverse SSH tunnel không khó, nhưng bảo mật trang web mới khó. Vì vậy nếu bạn chọn thực hiện ý tưởng như máy chủ NextCloud cục bộ, hãy cô lập nó trong máy ảo ít nhất. Cách này, nếu trang web bị xâm phạm, ít nhất phần còn lại của hệ điều hành sẽ không bị hại.
Và, bạn biết đấy... luôn sao lưu những gì bạn không muốn mất!