SSH Tunnel扫盲(ssh port forwarding端口转发)

SSH的的Port Forward,中文能够称为端口转发,是SSH的一项很是重要的功能。它能够创建一条安全的SSH通道,并把任意的TCP链接放到这条通道中。下面仔细就仔细讨论SSH的这种很是有用的功能。linux

 

SSH Tunnel有三种,分别是本地Local(ssh -NfL),远程Remote(ssh -NfR),动态Dynamic(ssh -NfD)。(含义参考man ssh浏览器


说明:在咱们举例说明用法以前,先假设你有一台SSH机器,它的IP是a.b.c.d。

1:本地Local(ssh -NfL)安全

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

ssh -NfL a.b.c.d:1234:www.google.com:80 a.b.c.d

此时,在浏览器里键入:http://a.b.c.d:1234,就会看到Google的页面了。

在绑定1234端口的时候,能够省略前面的ip,如此一来,1234端口就仅仅绑定在localhost地址上,更安全:

ssh -NfL 1234:www.google.com:80 a.b.c.d

此时浏览的话就要在a.b.c.d机器上使用http://localhost:1234了。

什么时候使用本地Tunnel?

好比说你在本地访问不了某个网络服务(如www.google.com),而有一台机器(如:a.b.c.d)能够,那么你就能够经过这台机器来访问。


2:远程Remote(ssh -NfR)网络

ssh -R <local port>:<remote host>:<remote port> <SSH hostname>

在须要被访问的内网机器上运行: ssh -NfR 1234:localhost:22 a.b.c.d

登陆到a.b.c.d机器,使用以下命令链接内网机器:

ssh -p 1234 localhost

须要注意的是上下两个命令里的localhost不是同一台。这时你会发现本身已经连上最开始命令里的localhost机器了,也就是执行“ssh -NfR”的那台机器。

什么时候使用远程Tunnel?

好比当你下班回家后就访问不了公司内网的机器了,遇到这种状况能够事先在公司内网的机器上执行远程Tunnel,连上一台公司外网的机器,等你下班回家后 就能够经过公司外网的机器去访问公司内网的机器了。
ssh

 

 

3:动态Dynamic(ssh -NfD)-Socket代理测试

ssh -D  

ssh -NfD 1234 a.b.c.dgoogle

a.b.c.c 是server 地址.net

如此一来就创建了一台Socket代理机器,接着在浏览器上设置Socket代理:地址是localhost,端口是1234,今后之后,你的访问都是加 密的了!你能够经过访问WhatIsMyIP来 确认本身如今的IP,看看是否是已经变成a.b.c.d了。

测试阶段,也能够把端口绑定在外网地址上,如此一来,你在浏览器上就可使用外网地址设置Socket代理,但这仅限于测试,不然,你的机器就不安全了, 随时可能成为肉鸡。对于Windows用户来讲,若是讨厌命令行,还可使用MyEnTunnel来实现一样的功能,配合Firefox的 FoxyPorxy,基本就无敌了,至于具体的配置方法,小崔已经写好了:使用Firefox+foxyProxy+SSH翻山越岭。若是你使用的是Chrome的话,则能够选择 Proxy Switchy!来实现一样的效果,恕很少言。firefox

相关文章
相关标签/搜索