SSH也可以这样玩!!!!!!!!!!!!

本文可以帮你:
1.认识猪猪
2..***(是不是很诱惑你)
3.防火墙没开3389,咋连IDC内网的windows呢?
4.开发人员的要用mysql客户端连到mysql上去改数据,但是防火墙是封了3306端口的,咋整?
5.记住三个字母 S S H (如果你已对它十分熟悉请绕行)
 
猪猪:我这可不是在骂人之类的,不信可以点开他博客看看(http://liang831002.blog.51cto.com/)。他今天提了一个问题,真把我难住了。由此还引发了一堆问题。之所以称之为问题,只能怪小弟才疏学浅,没能帮他解决问题还引出了一堆疑难杂症。。。
猪猪同学问的问题
我有web代理服务器的ip,平时通过这个代理浏览国外网站(即所谓的***)
现在我有个java+c的应用跑在linux上,这个应用要向国外的某些服务器(例如twitter,被gfw屏蔽了)推送一些信息,如何实现?
他知道我以前客户是老外,服务器大部分在国外,所以在群里找到我。可惜俺客户的服务器都是白名单里面的,还从没遇到***的问题呢~ 不过这个问题着实引起了我的兴趣。
首先我在群里面求救:得到如下答:php curl 函数,支持设置代理服务器。由此我想到linux自带有curl软件的,应该可以加以利用.
其次我曾经利用国外的服务器做过SSH动态转发来***(小朋友不要学),所以我想的是最好能有台国外服务器提供ssh 账号来做转发,这样就可以了。
我提供给他两种解决方案(如有更好的方案请高手赐教,小弟不甚感激)
1.找一个有国外vps的家伙要个ssh账号,做ssh转发这样最简单
2.linux里面有curl好像可以通过代理向目标服务器post数据(前提是你必须先找到代理服务器)
3.秋香大哥提醒我可以用***(大哥博客 http://sery.blog.51cto.com)
 
以下我就开始跟他在纠结于ssh转发的实现了.
一般来说,ssh是用来做linux远程连接的,作为linux 系统管理员,手边常会用到putty,secureCRT等ssh连接工具.而它的功能远不止这.之前写了篇文章关于用它做文件传输的感兴趣的可以看看http://yahoon.blog.51cto.com/13184/43418接下来讲正题:
 
SSH TUNNEL
译作ssh 隧道,在不同的地方名称不一样,例如ssh转发,ssh端口映射,ssh代理服务,ssh***等.实现的功能笼统来说就是将本地的一个端口映射为所要访问的目标机器的某个端口,这个映射的过程通过一台ssh 服务器与本地的ssh会话来实现,这个会话即为ssh隧道.
关于"目标机器":
目标机器的目标端口必须是ssh server可以访问到的
目标机器:可以是一台特定的机器(包含ssh server自身),这习惯称之为端口映射,是本地端口与目标端口一对一的转发;
            也可以是任意台的机器,称之为动态转发.
关于"ssh隧道":
因为转发过程是通过ssh会话传输的,所以操作期间ssh会话是不能关闭的.说白了就是ssh连上了不能断.
 
 
以下是windows下常见的ssh tunnel设置(以secureCRT为例).
关于linux的可以读http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/,
1. 在secureCRT里打开ssh 服务器的连接 (这里比如是192.168.0.100)
2. 选择菜单Options--session Options,点击左侧的Port Forwarding
clip_p_w_picpath002
点击Add按钮
3. Tunnel设置
3.1 一对一映射
例子一: http端口映射
clip_p_w_picpath004
这是一个典型的端口映射的设置
将本地的 127.0.0.1:77 映射为目标 www.g.cn:80
实现的效果就是ie里面访问http://127.0.0.1:7777会出现www.g.cn
clip_p_w_picpath006
例子二
我们的目标服务器与ssh服务器是同一台,希望访问其mysql,但是它的防火墙封了3306,可以按如下配置
clip_p_w_picpath008
这样在客户端里面设置连接本地的8888端口就访问到服务器的3306了,以下是使用mysql-front时的截图
clip_p_w_picpath010
例子三:
有台windows 与ssh处于同一内网,但是idc的防火墙禁止了3389对外开放.一般来说我们都会选择使用***拨号进去再远程桌面. 用我们的ssh tunnel就省得拨号了.配置如下
假设windowsip为10.0.1.100
clip_p_w_picpath012
打开远程桌面连接本地的9999试试看能连上不?
3.2 一对多的动态转发
这里其实就是我们经常使用的web浏览器的代理功能,设置好代理服务器,就可以访问任何目标网站了(前提是我们的代理必须能访问到这些目标).而ssh动态转发则可以将ssh server做成一个这样的代理服务器.动态转发实现的是socks协议.当我们的ssh server位于国外,那就可以用它来***咯
设置如下:
clip_p_w_picpath014
只需要将本地的127.0.0.1:8080设为浏览器的socks代理即可.这个就不用演示了吧.
这样你就可以实现将ssh server做代理的功能了.
注:
在3.1的例一里面,做的一个http的一对一端口转发,注意这种情况下并不是所有域名都适用的.例如如下域名
Baidu.com
根据网页的代码的具体实现不同,所以效果也不同:有的网页根本就打不开,有的是自动跳转域名上去.(请熟悉的哥们给咱解释解释~)
具体问题具体分析咯,按照使用场合来选择使用~
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章