最近有需求使用ssh隧道,顺便研究了下,以下记录一下大概说明

ssh隧道顾名思义在可以通过ssh连接的server之间建立加密隧道,常用于突破网络限制

常用三种端口转发模式:本地端口转发,远程端口转发,SOCKS代理

一、本地端口转发

场景1:

本机A:10.10.100.1

跳板机B:111.111.111.111

远程主机C:222.222.222.222

主机A可以ssh连接到B但无法ssh到C

主机B可以ssh到C

现在希望从主机A ssh到主机C

这种情况在一些防火墙环境下非常常见

现在使用如下命令建立隧道

ssh -Nf -L 127.0.0.1:2222:222.222.222.222:22 111.111.111.111

此时查看本地会发现本地监听2222端口,此时ssh连接本地2222端口即是连接主机C

-N 表示不执行任何命令只建立连接

-f 表示后台运行

-L 参数格式:[local_address:]local_port:remote_host:remort_port,本地地址可以省略,默认127.0.0.1(有人说是所有地址,但我测试的默认是环回地址)

此方案还可用于远程mysql等服务端口映射到本地,然后使用图形化工具管理等

二、远程端口转发

场景2:

主机A:10.10.100.1 本身没有公网地址,通过NAT方式上网

主机B:111.111.111.111 公网主机

主机A可以ssh连接到主机B,但由于是NAT公网无法主动连接到主机A

现在需要从公网ssh到主机A

使用如下方式建立隧道

ssh -Nf -R 0.0.0.0:2222:127.0.0.1:22 111.111.111.111

建立成功后会发现主机B 监听2222端口,此时通过任意机器连接主机B的2222端口即连接主机A

这种方式常用于访问防火墙后或通过NAT上网的内外主机

三、SOCKS代理

场景3:

主机A:10.10.100.1 内网机器无法访问公网

主机B:10.10.100.2 内网机器,但有公网地址,可以访问公网

现在需要主机A通过主机B访问公网(当然也有别的解决方案,我们这里只讨论ssh隧道技术)

使用如下命令建立隧道

ssh -Nf -D 1080 10.10.100.2

此时主机A监听1080端口,其他程序需要配置socks代理转发到此端口即可访问公网

若程序本身不支持配置socks代理,可能还需要些其他的代理工具。

(参见上一篇文章ssh代理上网 http://www.cnblogs.com/soyops/p/sshsocket.html)

这种方式如果有一台国外的vps可以建立隧道用来科学上网。

注:若使用隧道科学上网的话最好开启压缩参数(-C)速度会快很多。


ssh隧道的更多相关文章

  1. SSH隧道应用, 突破网络限制

    文/怡文圣美 这篇文章可以帮你解决下面三个问题: 不能直连服务器, 要先登陆跳板机, 造成客户端工具无法连接服务器. 服务器没有公网IP, 且只允许公司IP访问, 要在家里操作要先远程桌面到工作机再登 ...

  2. ssh隧道(端口转发)

    本地转发: ssh -Nf -L [bind_address:]port:host:hostport sshServer -Nf 后台运行 -L 本地转发 [bind_address] 绑定本地地址, ...

  3. 通过 SSH 隧道方式图形化连接 AIX 服务器

    跳转到主要内容 登录 (或注册) 中文 [userid] IBM ID: 密码: 保持登录. 单击提交则表示您同意developerWorks 的条款和条件. 查看条款和条件. 需要一个 IBM ID ...

  4. ssh隧道技术

    大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人.下面是个人根据自己的需求以及在网上查找的资料配合自己的实际操作所得到的一些心得. SSH ...

  5. 【转】三种不同类型的ssh隧道

    转自:http://blog.creke.net/722.html 大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人.下面是个人根据自己的 ...

  6. SSH隧道技术----端口转发,socket代理

    原文的原始出处不详,本文也是在复制引用了某篇转载,并做了必要的整理与编辑. 本文的受众 如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写 ...

  7. 公司内网Debian Server上的openvpnserver搭建并通过SSH隧道转发到广域网

    因为戴维营公司在长沙的学员,研发人员和北京的研发人员须要协同研发,故须要让北京的兄弟们增加到长沙办公室的内网,訪问版本号 管理server,于是採用在内网server上搭建一个OpenVPN服务,并把 ...

  8. 配置SSH隧道访问Ubuntu服务器上的MongoDB

    为了数据安全,在MongoDB的配置文件里,一般会把默认的27017端口port改为自定义的端口号,然后把允许访问的IP设为127.0.0.1(即主机本身).但是这样就会在开发的过程查看数据时带来麻烦 ...

  9. 调试利器:SSH隧道

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文作者:ivweb 吴浩麟 原文出处:IVWEB社区 未经同意,禁止转载 在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需 ...

随机推荐

  1. linq 为什么要用linq linq写法

    LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作 ...

  2. 读 zepto 源码之工具函数

    Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.extend 方法可以用来扩展目标对象的属性.目标对象的同名属性会被源对象的 ...

  3. app性能测试【通过loadrunner录制】

    随着智能手机近年来的快速增长,从游戏娱乐到移动办公的各式各样的手机APP软件渗透到我们的生活中,对于大型的手机APP测试不仅要关注它的功能性.易用性还要关注它的性能,最近发现LoadRunner12可 ...

  4. String属于“假引用类型”,代码为证(一个String引发的血案...)

    一直以为String是引用类型,今天写了个浅拷贝的测试,发现String有基本类型的特征. class A{ public int a = 555; } class User implements C ...

  5. httpd配置ResponseHeader

    今天遇到一个问题:我把项目编译后的静态文件发布到开发机上,开发机使用httpd启的静态文件服务,页面的访问是在特制的壳浏览器里面,我更新了代码后,发现页面被缓存了,找到壳的RD联调了一下,发现我的主页 ...

  6. LeetCode4. Median of Two Sorted Arrays---vector实现O(log(m+n)--- findkth

    这道题目和PAT上的1029是同一题.但是PAT1029用O(m+n)的时间复杂度(题解)就可以,这道题要求是O(log(m+n)). 这道题花费了我一个工作日的时间来思考.因为是log因而一直思考如 ...

  7. springcloud(二):注册中心Eureka

    Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...

  8. 广义后缀树(GST)算法的简介

    导言 最近软件安全课上,讲病毒特征码的提取时,老师讲了一下GST算法.这里就做个小总结. 简介 基本信息  广义后缀树的英文为Generalized Suffix Tree,简称GST. 算法目的   ...

  9. su 切换用户的提示"This account is currently not available"

    su 切换ivalue用户时,提示"This account is currently not available"; 首先进入/etc/passwd文件中是否添加ivalue用户 ...

  10. jsp的自定义标签 控制jsp内容显示

    引入方式示例 <%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %> tld文件 <?x ...