反向SSH——让NAT和firewall见鬼去吧!

这个反射SSH可以用来远程登录处于内网或者FIREWALL的机器。
比如,好多学校或者企业神马的,由于公网IP不够用,基本上都是使用NAT技术让师生或员工上网的。处于这种环境的机器是没有属于自己的IP的,目前的IP路由无法直接让你连接这样的机器。既然你不能主动连接它,让它主动连你不就对了吗?YES,U are right!就像某句话说的一样,“生活就像那啥,如果不能反抗,那就享受吧!” :grin:
下面要介绍的反向SSH就是用的这个道理。
若natPC 是我们要连接的处于内网的机器,freePC代指自己的机器
利用反向SSH:处于内网或FIREWALL下的机器natPC使用SSH转发freePC的端口回到他自己(natPC)的22端口。然后,freePC连接到自己的约定定端口,通过该隧道,freePC就能连接到natPC了。这听起来可能比实际操作复杂。实际操作就两步搞定而已。

首先,在处于内网或FIREWALL下的机器(natPC)上执行以下命令(起初命令里少了个-R ,感谢crossyou童鞋指出 :mrgreen: ):

1
$ ssh -f -N -R 2022:localhost:22 username@remote.freePC.com

其中remote.freePC.com相对于natPC来说为远程主机,可以是域名,也可以是IP。这条命令作用就是转发远程主机的2022端口到本地主机的22端口。

1
$ ssh username@localhost -p2022

上面这条命令作用就是登录本地主机的SSH,指定端口号为2022 ,注意这里的端口号必须和对方设置的一样。这样,连接本地的2022端口,就相当于连接到了处于内网机器的22端口啦,然后,想在上面干嘛干嘛~~ :mrgreen:

有图有真相:

原文:http://tipotheday.com/2009/10/10/reverse-ssh-defeating-nat-and-firewalls-not-under-your-control/

更多
4 Responses Post a comment
  1. 荒野无灯

    :razz: 是的,我没有这个R根本无法运行。。。。

  2. crossyou

    $ ssh -f -N -R 2022:localhost:22 username@remote.freePC.com

    是不是少了个 -R

Leave a Reply

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS