使用ssh tunnel 来做代理或跳板

接前文

http://www.cnblogs.com/piperck/p/6188984.html  使用ssh config配置文件来管理ssh连接

前文说了如何配置自己的ssh config 来方便的管理自己的ssh连接,以及如何使用ssh-add来将自己密钥密码存储起来。接下将讨论一下使用ssh来做转发和跳板的相关实践。

首先还是先说下这么一个情况:

我们的外部防火墙阻止了一些常用端口,现在打开的只有22 80 和443 也就是ssh http以及https服务可用,现在我可以通过和远程主机建立tunnel 通过命令将本地的某个端口的流量通过tunnel转发到远程主机的指定端口上。

ssh -L 就是做这个事情的 例如 我想将本地的3306端口上的流量通过ssh23端口转发到目标主机的9999端口上可以使用

ssh -L 3306:127.0.0.1:9999 target_host

同时这个命令耶可以使用ssh config写法如下:

Host tokyo-hot
    Host target_host
    LocalForward 9906 127.0.0.1:3306    User: piperck

另外一个非常实用的,可以使用ssh来轻松越过墙

使用ssh -D命令可以直接代理到目标,而且目标将会自动监听和转发。支持socks4 socks5代理。ssh可以在此充当一个sock5代理服务器。指定一个端口,然后由这个端口作为socks代理服务器进行转发。

ssh -TND 9999 [email protected]_server  端口后面接目标ssh到的目标主机 即可建立一个简易的sock5代理服务了。 如果你的机器是在墙外面,那么你将可以使用这条ssh tunnel FQ。流量会由9999端口进行代理转发。

我理解的流量走的顺序大概是,应用端口->指定端口代理服务器(9999)->ssh(22)   >>>>>>>>>>>ssh(22)目标主机->代为访问目标地址->原路返回数据。

这样相当于将外部服务器做了一个跳板,从跳板上访问另外的目标地址。 如果你喜欢 甚至可以嵌套ssh命令登陆多台机器 类似:

ssh -A -t target_1 ssh -A -T target_2.....

使用这种链条一路访问下去(这里使用-A参数是因为 目标主机存储的是 本地计算机的公钥 如果不是存的本地公钥而是target_1的公钥可以去掉这个参数)。

另外还有一种方式可以实现这种连续跳转的。

Reference:

http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/  Simplify Your Life With an SSH Config File

http://www.cnblogs.com/-chaos/p/3378564.html  ssh -D -L -R 差异

http://www.cnblogs.com/piperck/p/6188984.html  使用ssh config配置文件来管理ssh连接

时间: 2024-12-25 18:08:11

使用ssh tunnel 来做代理或跳板的相关文章

Navicat for Mysql SSH tunnel 用跳板机解决方案

Navicat Mysql SSH tunnel不能使用跳板机,对于需要跳板机登录的主机,他自带的SSH Tunnel就是鸡肋了.其实从原理上分析,根本不需要开启他得SSH Tunnel,使用本机强大SSH端口转发,加上跳板代理,即可完美解决. 1.先取消已经设置的SSH Tunnel,如下图都清空 2.本地配置好跳板机,跳板机文章很多,百度即可.比如我的: 替换Host , User, 123.45.67.89,这些换成你自己对应的参数: vi ~/.ssh/config Host *.myd

SSH Tunnel (端口转发) -- 把个人PC变成“幕后boss”

指路牌 SSH Tunnel 端口转发 网上有帖子提到SSH Tunnel与端口转发是不同的,这里我没有深入研究两个名词的具体区别,从结果上来说,我是被SSH Tunnel这个名词引到这个知识点的,但实现的效果很像"端口转发",姑且都写上吧. 适用场景 希望在自己电脑本地启动服务,让Internet发向服务器的请求转向自己的电脑,从而使调试更便利. 该debug模式只有特殊情境:如强制需要固定IP等才会用到,并不具有普遍性.网上大多教程是将端口映射到局域网内某设备上,应该都出出自运维向

使用ssh tunnel连接局域网机器

当需要浏览器打开内网的某个ip地址时,可以通过putty建立tunnel的方式,我之前的博文有提到: 也可以通过在本地安装vnc viewer,登陆login节点,使用login节点的浏览器进行打开内网的ip地址: 使用ssh tunnel是最为简单的一直方式: 例子: node1 有公网ip: node2 只有内网ip:node1和node2之间网络相通: 我们只能在浏览器上打开node1的服务:我们可以在node1上建立ssh tunnel,实现在浏览器上通过node1的公网ip和端口获得n

还在做代理?不如自己搭建微信平台

我国电子商务面临的问题,淘宝退出百度无疑是一个遗憾.当在网上购物时,用户面临的一个很大的问题就是如何在众多的网站找到自己想要的物品,并以最低的价格买到.自从淘宝退出百度,建立自己的搜索引擎后,广大消费者再也不能再百度里面直接搜索有关淘宝的商品了,这无疑是一个遗憾. 现在又出现了微商城,还没有被太多人所熟知,但是微信营销已经以非常快的速度在吞噬这整个市场,微商城.商家入驻,微门店,微餐饮,微酒店,微教育,微物业,微医疗,微信墙,微花店,微美容,微生活等很多功能,微酷WeiKuCMS网站是多功能微信

通过ssh tunnel连接内网ECS和RDS

? 通过ssh tunnel连接内网ECS和RDS 这里讲了ssh tunnel的原理.很清晰. 此后又给外网访问内网增加了一种思路.感觉特别棒.

Linux SSH tunnel access test

Use the SSH to build up the tunnel access to other computer can make the communication encrypted and secured, tested on the http service by using the SSH tunnel access, 1, use the wireshark to capture the data without the SSH tunnel,  host as 192.168

使用putty进行ssh tunnel远程内网机器

通常我们通过登录具有外网ip的远程机器来连接内网的机器:本文介绍,通过putty进行ssh tunnel,进而达到使用本机直接连接远程内网机器: 1,在putty中创建一个session,输入具有外网ip的node信息: 2,在connection下面找到SSH,打开SSH点击tunnel输入source port,source port是你想在本机使用的端口,destination是远程内网机器和端口:保证你的login的node可以和destination的机器能够相通: 3,回到sessi

使用autossh实现开机创建ssh tunnel的方法以及shell脚本.

有时候回需要到ssh tunnel,手动使用ssh 创建这些并没有太大的问题,可是如果尝试开机启动,写个shell脚本并在rc.local里面运行这个脚本并不成功,原因也不得而知. 后来发现了autossh这东东,不单单能够静默模式创建ssh tunnel还能设置自动检测,并自动尝试链接的选项. 本文附件提供的脚本,需要放置在/etc/ini.d/目录下,并使用chmod +x 修改权限.然后也有必要使用update-rc.d service defaults添加入开机启动服务. 当然不要忘记修

使用Navicat的SSH Tunnel和SecureCRT的端口转发功能连接本机IP被禁止访问的远程数据库服务器

为了安全起见,数据库服务器一般只部署在内网:或者如果部署在公网,但只对某些指定的IP开放.但如果数据最终是给公网用户查询的,总会有一条通道可以访问到数据库.下面利用Navicat和SecureCRT实现对两种不同情景下的数据库访问. 情景一:数据库服务器在公网开放了SSH服务 方法一:利用Navicat的SSH Tunnel Navicat中的配置: General选项卡: Host Name/IP Address:数据库服务器的域名或IP地址 Port:数据库端口(如MySQL:3306) U