参考:

http://www.dkys.org/archives/1111.html

SSH的-L与-D代理

SSH有三种代理参数-L,-D,-R。-R代理不是本次重点,有兴趣的读者可以自行查阅man手册。

-L参数会在本地监听一个端口,转发数据到远程主机上。
ssh -NL 3306:localhost:3306 user@remote_ip
在本地监听一个3306端口,转发到远程主机上的localhost:3306上,等于访问本地的3306端口就相当于访问到了远程的mysql服务。这种方式访问远程服务会更安全,远程服务不需要对外网暴露端口。
很明显,这个代理只适用于代理单一ip单一服务的需求有用,本质上是反向代理,客户端不需要额外配置。

-D参数就厉害了,在本地开放一个socks5协议的代理端口,利用这个端口可以动态的访问到远程内网的环境。
ssh -ND 1080 user@remote_ip
这条命令会在本地开放一个1080的socks5端口,支持socks5协议代理的应用程序就可以利用这个端口直接访问到内网资源。比如:

curl --socks5 127.0.0.1:1080 localhost
让curl命令利用socks5协议代理访问到远程服务器上的http服务,浏览器直接配置这个代理服务就可以无阻碍的访问到内网中所有的http服务了。
很明显,这个代理本质上是正向代理,可以实现一个代理访问更多服务资源的需求。但是需要客户端本身支持代理

sshuttle

一个神器。回到我们之前hadoop集群(比如zookeeper集群、kafka集群等)的例子,这些集群没法通过单一的端口转发代理实现集群的访问,VPN有些太重,而且现在非常容易被ban。此时sshuttle进入我的视野,ubuntu下直接用sudo apt install -y sshuttle就可以安装了。这个工具非常巧妙,利用iptables的端口转发功能,直接把指定目标网络的请求通过ssh代理到远程,实现了非常类似于VPN的功能,但是几乎零配置,开箱即用,非常方便。不过只支持linux环境的系统(如Linux, FreeBSD, MacOS等等)。

让我们先看一个简单的例子:

sshuttle -r user@remote_ip 10.0.0.0/8
代表将10.0.0.0/8这个网段的请求走SSH代理,是不是很容易使用?此外,还支持--dns,--auto-hosts, --auto-nets等十分有用的参数,根据实际情况去选用即可。

sshuttle实际体验上非常类似于VPN,但是比VPN更轻量,而且无需管理。值得注意的是,本质上这个工具是利用了端口转发的原理,并不是真正的VPN,所以对于ICMP这类的协议是没用的,也就是说,对于ping命令是无效的。

公司例子: jumpserver转发

[program:p1]
directory=/usr/bin/
command=/usr/bin/sshuttle -l 127.0.0.1:12300 -r oride-ops 10.52.0.0/16 -vv  #将10.52.0.0/16这个网段的请求用本地端口12300走ssh代理
autostart=true
autorestart=true
startsecs=5
#stderr_logfile=/opt/super_p1_stderr.log
#stdout_logfile=/opt/super_p1_stdout.log
user=root
redirect_stderr=true
stdout_logfile_backups=1

最新文章

  1. C语言 · 薪水计算
  2. 订货(bzoj 2424)
  3. openwrt-智能路由器hack技术(2)---"网路信息监控和窃取"
  4. 对原型prototype的详解
  5. c# Task编程一个task抛出异常后怎么取消其他线程
  6. N-gram介绍
  7. 李洪强iOS开发之计算数组的最大最小值
  8. Codeforces Round #215 (Div. 2) D题(离散化+hash)
  9. wpf 仿QQ音乐歌词卡拉OK
  10. 动态规划(斜率优化):BZOJ 3675 [Apio2014]序列分割
  11. CentOS 恢复 rm -rf * 误删数据(转)
  12. hmac_sha1 签名
  13. U+00A0 (Non-breaking space)无法被正确压缩
  14. Qt同步线程(比较清楚,而且QMutex QMutexLocker QReadWriteLock QSemaphore QWaitCondition 每个都有例子)
  15. C#正则分组实例
  16. Mysql锁机制--乐观锁 & 悲观锁
  17. DirectX11 With Windows SDK--24 Render-To-Texture(RTT)技术的应用
  18. SpringBoot系列: Spring支持的异常处理方式
  19. 什么是位、字节、字、KB、MB (转)
  20. 【cocos2d-x 手游研发----界面UI设计】

热门文章

  1. 编译原理--02 自顶向下、自底向上的LR分析复习(清华大学出版社第3版)
  2. xml配置文件 操作
  3. CF #366 DIV2 C. Thor 模拟 queue/stack降低复杂度
  4. FZU - 2103 Bin & Jing in wonderland
  5. 数位dp入门(内容一样,新版格式)
  6. SimpleThreadPool给线程池增加拒绝策略和停止方法
  7. $\LaTeX$数学公式大全1
  8. DB 分库分表(4):多数据源的事务处理
  9. python3笔记二十三:正则表达式之元字符
  10. Java-JDK-windows和linux版-百度云下载