Cách public web localhost ra internet bằng SSH

Hi all,

User scenario:

  • Em đang dev web và muốn share cho bạn bè, thầy cô review.
  • Em muốn deploy web trong 1 đến 2 giờ.
  • Đang code gặp bug muốn share lên forum để hỏi, và muốn mọi người truy cập thay vì chụp màn hình.

Giải pháp:

Em không phải chủ modem nên giải pháp NAT IP và port trên modem tuy đơn giản nhưng không khả thi. Giải pháp phù hợp nhất là dùng ngrok, hoặc localtunnel, … hầu hết những dịch vụ trả phí, rất chậm, phụ thuộc third party.

Cơ chế:
Em có server riêng cả on-premise và azure, google cloud.
nên em làm theo hướng dẫn SSH Port Forwarding như này:

Thực hiện:

  1. Trên laptop em tạo project hello word bằng nodeJS chạy cổng 8080.
  2. check kết quả
curl 127.0.0.1:8080
Hello
  1. Tại azure em tạo ubuntu có IP là 4.216.208.137 và cài nginx để check xem cổng 80 đã thông chưa
  2. tại laptop chạy lệnh
curl 4.216.208.137
đã hiện các thẻ HTML welcome nginx

Sau đó stop nginx và xóa.

  • systemctl stop nginx
  • apt uninstall nginx
  1. trên azure mở file /etc/ssh/sshd_config config 2 chỗ:
  • AllowTcpForwarding yes
  • GatewayPorts yes

(systemctl restart sshd)

  1. Trên laptop em chạy lệnh:

ssh -R 80:localhost:8080 [email protected]

hiện ra màn hình nhập password:

ssh -R 80:localhost:8080 [email protected]
[email protected]'s password:

tự access vào server như kết nối SSH bình thường

Warning: remote port forwarding failed for listen port 80
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-1038-azure x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sat May 20 03:59:27 UTC 2023

  System load:  0.0               Processes:             123
  Usage of /:   5.9% of 28.89GB   Users logged in:       1
  Memory usage: 10%               IPv4 address for eth0: 10.0.0.4
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status

New release '22.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sat May 20 03:50:01 2023 from 1.53.52.245
root@Hello:~#

Kết quả

  • Trên laptop truy cập 4.216.208.137 vẫn không có chữ hello
  • không thấy thông báo lỗi gì hết

Không biết em sai ở đâu, ai làm rồi chỉ em với. Em cảm ơn

Với 1 cái app simple, nhu cầu đơn giản để share cho bạn bè thầy cô, trong khoảng 1 đến 2 tiếng.
Dùng ngrok nha bạn, chỉ 1 command lại tất cả được giải quyết.

Warning: remote port forwarding failed for listen port 80

2 Likes

Em đã làm thành công, cảm ơn anh, thật là ẩu quá mà :sneezing_face:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?