使用SSH通道进行端口映射加密隐藏流量

应用场景:
你有A(1.1.1.1)和B(2.2.2.2)两台服务器,B服务器你不想让外面的人知道,A是正常对外的服务器。
以前用作web服务器的时候,我们都知道用反向代理就能实现这个功能了,但是如果我们想隐藏ftp或者其他流量呢?
SSH通道完美解决了这个问题。

你可以在A服务器上,建立一个连接到B服务器的SSH通道,并且把A的某个端口(例如21端口)映射到B服务器的某个端口(例如88)上面。

这时候,你连接A服务器的21端口,就等于连接B服务器的88端口,不过你和B服务器之间的流量,是走A服务器的SSH通道加密了的。

端口映射的文档在ssh的手册里面有详细介绍

在A服务器上执行:

/usr/bin/ssh -Nf -L 1.1.1.1:21:2.2.2.2:88 2.2.2.2

提示输入B服务器的用户名和密码,登陆成功之后通道就建立了,这时候你访问A服务器的21端口就像相当于访问B服务器的88端口了。

局限:

1。从B服务器退出SSH登录的话,通道会终止,所以A和B之间要一直连接着

2。因为SSH属于TCP协议,所以只能通行TCP协议流量,UDP无法通过。

经测试,OpenVPN 使用TCP链接的话 流量无障碍完美通行


发表回复