当前位置: 首页 > 工具软件 > SSH Web Proxy > 使用案例 >

通过反向ssh连接+socks5+web-proxy来访问内网资源

赵佐
2023-12-01

最近碰到个这么个问题,校园网内的资源只能在校园网内访问,在寝室里连不到校园网时候就无法访问了,很不方便。所以想了一个方案来解决这个问题。
所需硬件:一台有公网IP的linux主机 A,一台在校园网内的Linux主机 B
所需软件:openssh, delegated.

思路

1.通过从B建立一个反向ssh连接CA上。
2.在A上通过C 建立ssh连接D(该连接用于socks转发)到B
3.在A上运行delegated建立web-proxy, 将web-proxy的数据通过D转发到B, 完成内网资源访问.

具体做法

这里假设A的IP地址为123.456.78.9, 用户名为user.

B

执行如下语句

$ ssh -f -N -R 10000:localhost:22 user@123.456.78.9

解释下, -f表示后台运行, -N表示不执行任何命令, -R表示建立一个反向连接 具体带的参数格式为 [bind_address:]port:host:hostport, port表在A上建立一个监听连接, 将数据从A端的port转发到 B端的host:hostport上, 执行这行语句要求输入用户user的密码。可以通过生成public key并存储到A上避免每次都要输入。

执行完毕后A上会多出一个监听在10000端口的连接

tcp        0      0 127.0.0.1:10000         0.0.0.0:*               LISTEN      9395/sshd: user

到这里 B端操作完成。

A

执行下列命令来建立socks转发

$ ssh -f -N -D 127.0.0.1:8888 -p 10000 root@localhost

解释下, 前面几个选项意思已经解释过, -D 127.0.0.1:8888 表示在127.0.0.1:8888上建立一个socks转发连接D, -p 10000 root@localhost意味着ssh会通过上面建立的CB端发起一个ssh连接, 这里的root是B机器上的一个用户名。同样可以通过public key的方式来避免每次都要输入密码。

接着安装delegated, 这里通过编译安装, 可以在这里下载到。下载并解压后进入delegate9.9.9目录,执行命令

$ make

编译好后,在src目录下会多出一个delegated可执行程序.
执行下列命令来建立一个监听在8889端口的web-proxy,并通过上述建立的socks5连接D来转发数据至B.

$ ./delegated -P8889 SERVER=http SOCKS=127.0.0.1:8888 PERMIT=*:*:*

到这里基本上完成了整个工作。

 类似资料: