Jer*_*ows 6 networking ssh tunnel
我有一个在本地计算机上运行的 Web 服务器,LAN 上的所有计算机都可以轻松访问它。我还有一个远程服务器,其公共 IP 地址/URL 指向它 (example.com)。我无法从网络外部访问我的本地服务器,因为我被困在 ISP 的 NAT 后面(他们不会授予公共 IP 或端口转发任何内容),因此我尝试配置反向 SSH 隧道来授予公共访问权限。
我正在ssh -R 8080:localhost:80 jemeadows@example.com -i $SSH_KEY -N本地服务器上运行以尝试创建隧道。
在远程服务器上使用 eLinks,我可以访问 127.0.0.1:8080,并且它可以正确显示本地服务器上的站点。但是,在浏览器中访问 example.com:8080 没有显示任何内容。我尝试使用本地端口转发将传入流量重定向到 127.0.0.1:8080,但这不起作用。还有其他想法可以将来自 Web 浏览器的传入流量重定向到我的 SSH 隧道吗?
-R 8080:localhost:80通常是不够的。请参阅man 1 ssh[强调我的]:
\n\n\n
-R [bind_address:]port:host:hostport
\n[\xe2\x80\xa6]指定将远程(服务器)主机上给定 TCP 端口或 Unix 套接字的连接转发到本地端。
\n[\xe2\x80\xa6]
\n默认情况下,服务器上的 TCP 侦听套接字将仅绑定到环回接口。这可以通过指定
\nbind_address. 空bind_address或地址*表示远程套接字应侦听所有接口。bind_address仅当服务器的GatewayPorts选项启用时,指定远程才会成功(请参阅参考资料sshd_config(5))。
127.0.0.1:8080您在服务器上的尝试表明侦听套接字已绑定到环回接口。它很可能没有绑定到任何其他接口。
您需要显式指定bind_address或使用*或使用空字符串作为bind_address。带有空的选项bind_address看起来像这样(注意前导:):
-R :8080:localhost:80\nRun Code Online (Sandbox Code Playgroud)\n此外,服务器上的状态也很GatewayPorts重要。sshd_config从man 5 sshd_config:
\n\n\n
GatewayPorts指定是否允许远程主机连接到为客户端转发的端口。默认情况下,
\nsshd(8)将远程端口转发绑定到环回地址。这可以防止其他远程主机连接到转发的端口。GatewayPorts可用于指定sshd应允许远程端口转发绑定到非环回地址,从而允许其他主机进行连接。该参数可能是no强制远程端口转发仅对本地主机可用,yes强制远程端口转发绑定到通配符地址,或者clientspecified允许客户端选择转发绑定到的地址。默认为no.
要实现你想要的选择一定不能no。Noteno是默认值,因此未指定GatewayPorts仍然意味着no。的价值yes将使-R 8080:localhost:80工作变得像-R :8080:localhost:80.
我GatewayPorts clientspecified在服务器配置和ssh -R :8080:localhost:80 \xe2\x80\xa6客户端上提供建议。
更改配置文件后,您需要重新启动 SSH 服务器或以其他方式告诉它重新加载配置。sshdOpenSSH 在收到挂断信号 SIGHUP 后重新读取其配置。
可能出现的其他问题:
\n8080来自 Internet 的端口连接。example.com(比较为什么原始站点可以工作,但端口转发到同一站点失败?)。| 归档时间: |
|
| 查看次数: |
5825 次 |
| 最近记录: |