我想在家里访问我的PC,但是,到我家的连接是在NAT防火墙下的,它阻止了所有端口,除了80和443。无论如何,我不能对网络做任何修改。
我已经在我的HOME和WORK PC上设置了httptunnel并成功测试了连接(可是SSHclient => PCWORK SSHd )
Work Server command: hts --no-daemon --forward-port localhost:22 8080
Home Client command: htc --no-daemon -F 1234 myserver.com:8080
Home ssh to server: ssh localhost -p 1234 (success)
但是我想用相反的方法。目标是:PC Work SSH Client => PC HOME SSHd,前提是隧道、SSH已建立并正常工作,无需任何修改。
有办法吗?
是否有可能通过SSH使用隧道访问本地家庭网络内部网?
______________ _______________
| PC HOME | | PC Work |
|------------| |-------------|
| Server SSH | | Client SSH |
| ^ | | | |
| | | | | |
| | | | V |
| Client HTC <===== BLOCKED ALL EXCEPT 80 ======= Server HTS |
|___[1234]___| 8080 |___[8080]____|
192.168.0.10 myserver.com
(No Public IP)
PS:我希望这个图表是清楚的
这里的关键字是远程隧道
一旦您有一个正常的ssh连接,就像您提到的(只是插入用户名,以便在localhosts的海洋中清楚地显示目的地:)
ssh -p 1234 htsuser@localhost
你可以反向扩展你的命令行来创建一个远程隧道。
因此,例如,要到达HTC的http端口,首先从HTC端启动一个额外的远程隧道连接,如
ssh -p 1234 -R9000:localhost:80 htsuser@localhost
这将在远程机器(HTS)的端口9000上打开一个隧道。在此隧道存在之前,您可以通过本地主机(HTS) 9000端口访问HTC的80端口(您可以通过浏览http://localhost:9000进行检查)
或者对于ssh,只需将80替换为22
ssh -p 1234 -R9000:localhost:22 htsuser@localhost
…然后在HTS端,输入
ssh -p 9000 htcuser@localhost