1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > [折腾]使用SSH服务实现一个socks5代理服务器

[折腾]使用SSH服务实现一个socks5代理服务器

时间:2019-03-15 10:50:28

相关推荐

[折腾]使用SSH服务实现一个socks5代理服务器

其实使用的是ssh的动态转发功能。

ssh -D 12345 -N -T root:remotehost

-D [bind_address:]port指定监听的端口,会在本地监听该端口,并将请求到该端口流量基于 SOCKS5 协议转发到远程主机上,其中[bind_address:]可以不填,当不写或者为*时表示监听全部地址。示例:-D *:8081,-D 8081,-D 127.0.0.1:8081,-D 192.168.0.1:8081

-N不执行远程命令,仅仅用于端口转发

-T不为该命令分配伪终端

ssh 的动态转发会在本地创建一个监听端口,并且将请求到该端口的流量全部转发到远程主机上,从而实现代理的功能,我们可以使用 curl 命令测试代理是否成功:

curl -x socks5://localhost:12345

通过上面的命令,我们可以通过本地12345代理,将本地请求csdn的流量转发给远程主机,由远程主机帮我们执行请求后将结果返回给我们。

在远程主机上实现一个简单的代理服务器

基于上面的逻辑,我们可以在远程主机创建一个简单的代理服务器:

ssh -D 12345 -N -T root@localhost

这种方式相当于使用 ssh 登录了当前主机,并创建了一个动态转发的接口,我们可以使用 curl 进行测试:

curl -x socks5://localhost:12345

这样的话我们就可以将当前主机的 13245 端口暴露出去,外部请求就可以将当前主机作为一个代理服务器实现请求的代理了。

当然这种实现的是一个简单的代理服务器,相当于将当前主机完全暴露到了外面,而且没有任何安全认证,如果有需要的话还是使用 squid 这类功能更加强大的代理服务器。

在上面的基础上,我们还可以使用 ssh 的基于远程端口代理的方式将这个端口映射到远端主机:

ssh -R [本地绑定地址:]端口:[远程绑定地址]:远程端口 -N -T root@remotehost

该命令执行后,相当于在远程主机上创建了一个监听端口,并且将请求到该端口的所有流量都转发到了本地的端口,我们只需要将本地的端口指定为刚刚我们创建的动态转发监听端口即可。

ssh -R 12345:localhost:12345 -N -T root@remotehost

参考资料

Linux curl命令详解

搭建一个SOCKS代理服务器

Socks5代理服务器搭建

Linux搭建Socks5代理服务器

彻底搞懂SSH端口转发命令

SSH 端口转发

ssh端口转发的三种方式

ssh-port-forwarding

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。