Vừa đọc tiêu đề, chắc hẳn nhiều bạn bật ngửa người vì nó :D. Localhost – host local tại sao có thể public được…?? Câu trả lời là CÓ đấy! “Không có gì là không thể, chỉ là chưa tìm ra giải pháp mà thôi”

fix -bug

Trước đây, mình đã gặp khá nhiều trường hợp hỏi bài và nhờ fix bug như ảnh trên, kết quả như thế nào thì các bạn cũng biết được rồi đấy

php tts

Làm sao có thể truy cập được khi nó chỉ là localhost. Server localhost của bạn thì chỉ có một mình bạn xem được thôiiii!

Nhưng qua bài viết này mình sẽ hướng dẫn các bạn public localhost lên server với nhiều mục đích khác nhau như nhờ xem và fix bug, preview project cho 1 ai đó… Chúng ta bắt đầu cùng với Localtunnel.

Localtunnel là gì?

Localtunnel cho phép bạn dễ dàng chia sẻ một dịch vụ web trên máy phát triển cục bộ của mình mà không gặp rắc rối với cài đặt tường lửa và DNS hay nói cách khác là một “loại công cụ” như một đường hầm (tunnel) liên kết localhost của bạn và mạng internet để bạn có thể truy cập vào localhost giống như một server bình thường.

Và một số công cụ khá phổ biến gồm có:

localtunnel chia sẻ localhost của bạn lên internet để dễ dàng thử nghiệm và chia sẻ! Không cần phải rắc rối với DNS hoặc triển khai chỉ để người khác kiểm tra các thay đổi của bạn. Và đặc biệt nếu bạn đang phát triển api muốn test thử trên google, facebook nhưng developer.google/facebook lại yêu cầu ssl – https, đây cũng là giải pháp cho vấn đề đó.

Các bước triển khai

Dưới đây mình có 1 trang web có đường dẫn localhost: http://localhost/laravel/laravel-queue/public/

preview project

Tiếp theo các bạn chạy lệnh:

ssh -R 80:localhost:port serveo.net

“nếu bạn chia sẻ cổng locahost 80/3000/4200 bạn chỉ cần thay thế port bằng 80/3000/4200″

Ở đây mình là localhost cũng là cổng 80 nên mình dùng lệnh: ssh -R 80:localhost:80 serveo.net

run serveo

Nhấn phím g để start a GUI

Sau khi nhấn phím q ta được như hình trên

Kết quả:

success serveo run

Cách nó hoạt động là như vậy!

serveo work
serveo work

Hướng dẫn sử dụng ( dịch by hoclom.com từ trang chủ )

Sử dụng cơ bản

ssh -R 80: localhost: 3000 serveo.net
Tùy chọn -R hướng dẫn máy khách SSH của bạn yêu cầu chuyển tiếp cổng từ máy chủ và yêu cầu proxy đến máy chủ và cổng được chỉ định (thường là localhost). Một tên miền phụ của serveo.net sẽ được tự động tạo để chuyển tiếp lưu lượng HTTP.

Yêu cầu nhiều trang web cùng một lúc

ssh -R 80: localhost: 8888 -R 80: localhost: 9999 serveo.net

Máy chủ mục tiêu không phải trên localhost

ssh -R 80:example.com:80 serveo.net

Yêu cầu một tên miền phụ cụ thể

Tên miền phụ được chọn một cách xác định dựa trên địa chỉ IP của bạn, tên người dùng SSH được cung cấp và tính khả dụng của tên miền phụ, do đó bạn sẽ thường nhận được cùng một tên miền phụ giữa các lần khởi động lại. Bạn cũng có thể yêu cầu một tên miền phụ cụ thể:

ssh -R incubo:80:localhost:8888 serveo.net
ssh -R incubo.serveo.net:80:localhost:8888 serveo.net

Thay đổi tên người dùng SSH để được chỉ định một tên miền phụ khác:

Thay đổi tên người dùng SSH để được chỉ định một tên miền phụ khác:

ssh -R 80:localhost:8888 [email protected]serveo.net
ssh -R 80:localhost:8888 -l foo serveo.net

Chuyển tiếp SSH

Yêu cầu chuyển tiếp cho cổng 22 và serveo.net sẽ hoạt động như một máy chủ nhảy, cho phép bạn thuận tiện SSH vào máy của mình (bắt buộc phải có một bí danh duy nhất):

ssh -R myalias:22:localhost:22 serveo.net

Sau đó, bạn có thể thiết lập kết nối SSH bằng cách sử dụng phục vụ như một trung gian như thế này:

ssh -J serveo.net [email protected]

Tùy chọn -J được giới thiệu trong ứng dụng khách OpenSSH phiên bản 7.3. Nếu bạn có một máy khách cũ hơn, bạn có thể sử dụng tùy chọn ProxyCommand thay thế:

ssh -o ProxyCommand=”ssh -W myalias:22 serveo.net” [email protected]

Chuyển tiếp TCP chung

Nếu bạn yêu cầu một cổng khác ngoài 80, 443 hoặc 22, lưu lượng TCP thô sẽ được chuyển tiếp. (Trong trường hợp này, không có cách nào định tuyến các kết nối dựa trên tên máy chủ và máy chủ, nếu được chỉ định, sẽ bị bỏ qua.)

ssh -R 1492:localhost:1492 serveo.net

Nếu cổng 0 được yêu cầu, một cổng TCP ngẫu nhiên sẽ được chuyển tiếp:

ssh -R 0:localhost:1492 serveo.net

Kết nối trên cổng 443

Trong một số môi trường, các kết nối cổng ngoài 22 bị chặn. Vì lý do này, bạn cũng có thể kết nối trên cổng 443.

ssh -p 443 -R 80:localhost:8888 serveo.net

Giữ kết nối sống

Sử dụng ServerAliveInterval để ngăn kết nối không hoạt động:

ssh -o ServerAliveInterval=60 -R 80:localhost:8888 serveo.net

Tự động kết nối lại

Sử dụng autossh cho các localtunnel liên tục hơn. Sử dụng “-M 0” để tắt kiểm tra kết nối của autossh (dựa vào ServerAliveInterval và ServerAliveCountMax thay thế):

autossh -M 0 -R 80:localhost:8888 serveo.net

Xem https://www.everythingcli.org/ssh-tunnelling-for-fun-and-profit-autossh/ để biết thêm về autossh.

GUI

Nhấn g sẽ bắt đầu một phiên GUI. Sử dụng các phím mũi tên lên và xuống để kiểm tra các yêu cầu / phản hồi và các phím mũi tên trái và phải để chuyển giữa các chế độ xem yêu cầu và phản hồi. Sử dụng j, k, u, d, p và n để cuộn khung thanh tra thấp hơn. Nhấn r để phát lại yêu cầu đã chọn. Nhấn h hay? bất cứ lúc nào để được giúp đỡ.

Tên miền tùy chọn
Để sử dụng tên miền hoặc tên miền phụ của riêng bạn, trước tiên bạn sẽ cần một cặp khóa SSH. Sử dụng chương trình ssh-keygen để tạo một cặp khóa nếu bạn chưa có.

Tiếp theo, sử dụng ssh-keygen -l và lưu ý dấu vân tay của khóa của bạn. Đây là một ví dụ đầu ra:

2048 SHA256:pmc7ZRv7ymCmghUwHoJWEm5ToSTd33ryeDeps5RnfRY no comment (RSA)

Trong ví dụ này, key là SHA256:pmc7ZRv7ymCmghUwHoJWEm5ToSTd33ryeDeps5RnfRY.

Bây giờ bạn cần thêm hai bản ghi DNS cho tên miền hoặc tên miền phụ bạn muốn sử dụng:

  • Một bản ghi A chỉ đến 159.89.214.31
  • Đối với mỗi khóa SSH cho phép, bản ghi TXT ở dạng authkeyfp=[fingerprint] . Đối với khóa ví dụ ở trên, bản ghi DNS sẽ là authkeyfp=SHA256:pmc7ZRv7ymCmghUwHoJWEm5ToSTd33ryeDeps5RnfRY.

Khi bản ghi DNS của bạn được đặt đúng chỗ, bạn có thể yêu cầu tên miền / tên miền của mình từ Serveo:

ssh -R subdomain.example.com:80:localhost:3000 serveo.net

Khi bạn yêu cầu chuyển tiếp cổng cho tên miền phụ.example.com, Serveo sẽ tìm nạp các bản ghi TXT từ máy chủ DNS của bạn và chỉ cho phép chuyển tiếp nếu bạn đã cung cấp khóa công khai có cùng dấu vân tay như được chỉ định trong bản ghi TXT.

Tổng kết

Bản free chỉ cho chạy tối đa 3 tunnel cùng lúc thôi nếu các bạn muốn hơn thì có thể gửi mail cho Admin của serveo.net:

Email me at [email protected] if you’re interested in licensing Serveo for business use or otherwise need more than 3 tunnels at a time.

Trên đây là bài viết Public localhost, tại sao không ? Hy vọng qua bài viết sẽ giúp các bạn rất là nhiều việc 😀

BÌNH LUẬN

Vui lòng nhập bình luận của bạn!
Vui lòng nhập tên của bạn ở đây