通过阿里云跳板机实现内网SSH反向代理

我有一台工作站(以下称之为WS)连接在华为4G 路由器B315 上,运营商并没有分配公网ip,因此从公网到这台电脑经历了两层NAT,一层是运营商的,一层是华为路由器的。假设用户名为user_ws
我租用了一台有弹性公网ip的阿里云服务器(以下称之为ALY),假设它的公网ip为ali.yun.srv.ip,阿里云默认的安全组开放了tcp访问端口3389,阿里云的默认用户名是root
通过在工作站上设置SSH反向代理,可以通过家里的笔记本(以下成为PC)与WS建立SSH连接。

ssh -R ali.yun.srv.ip:3389:0.0.0.0:22 root@ali.yun.srv.ip

为什么是0.0.0.0:22 ? 因为这个是本地的ssh端口,可以通过sudo netstat -tlpn 查看。
打开这个ssh的反向代理以后,就可以通过访问ALY的3389端口访问WS的user_ws了。

ssh user_ws@ali.yun.srv.ip -p 3389

2020 年 5月 28 日更新:

ssh -R 指的是remote port forwarding ,后面紧跟的映射规则是:

remote.ip<optional>:remote_port:local.ip:local_port

当有客户访问远端的4000端口时,等同于访问local的22端口,因此在用另一台机器访问ssh时可以用以下syntax:

ssh user@remote.ip -p 4000

注意:这个端口不能正在被占用,如果被占用可以用:

sudo netstat -plant

查看进程,sudo是为了看PID号,然后用:

kill -9 <PID>

结束进程

注意:不需要改/etc/ssh/sshd_config文件中的port,但是需要改"AllowTcpForwarding yes“和”GatewayPorts yes


同理,如果workstation上的localhost:8888有一个正在运行的服务(如dreamview),可以通过:
```bash
ssh -R 5000:0.0.0.0:8888 user@remote.ip

然后在浏览器中输入:
https://remote.ip:5000
访问localhost:8888端口的服务


版权声明:本文为weixin_40994913原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。