Huy's Blog Theo dõi blog này

Tự tạo SSH tunnel để forward port ra remote server

Published: 9/12/2016 11:01:26 AM

Khi làm việc, đôi lúc bạn chạy server ở localhost nhưng cần truy cập vào nó từ một thiết bị khác không cùng trong mạng nội bộ, ví dụ chạy web để demo cho khách hàng xem, hoặc muốn test API trên localhost của bạn từ mobile app.

alt text

Khi đó bạn cần phải forward port mà server app của bạn đang sử dụng (localhost) ra một server bên ngoài (remote server) để người khác có thể truy cập vào.

alt text

Để làm điều này thì bạn có thể sử dụng các dịch vụ như ngrok, PageKite, Forward.

Nhưng nếu có một server riêng thì chúng ta hoàn toàn có thể tự setup một dịch vụ như vậy để xài riêng mà không cần phải phụ thuộc vào ai. Bằng cách sử dụng SSH tunnel.

Setup từ phía server

Yêu cầu đầu tiên là server phải được setup để truy cập được từ bên ngoài (giả sử có domain là kipalol.com) và phải hỗ trợ SSH.

Truy cập vào server và thêm dòng cấu hình GatewayPorts vào file /etc/ssh/sshd_config như sau:

GatewayPorts yes

Sau đó thì restart lại SSH server:

service ssh restart

Tạo tunnel từ phía localhost

Giả sử trên localhost của bạn đang chạy một Rails app ở cổng 3000, và bạn muốn mọi người có thể truy cập vào Rails app này thông qua cổng 9000 từ phía server của bạn. Ví dụ: http://kipalol.com:9000

Ta chạy lệnh sau trên máy localhost:

ssh -N -R 9000<i class='em em-localhost'></i>3000 user@kipalol.com

Các tham số:

Từ bây giờ, user có thể truy cập vào http://kipalol.com:9000 để truy cập trực tiếp vào Rails app mà bạn đang chạy trên máy cá nhân của mình.

Ngoài ra các bạn có thể tìm hiểu thêm về các ứng dụng khác của SSH tunnel qua bài này

Gõ xong nhấn Ctrl + Enter để gửi.