最近有需求使用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. [进程管理]Linux进程状态解析之R、S、D

    Linux是一个分时操作系统,能够在一个cpu上运行多个程序,每个被运行的程序实例对应一个或多个进程,这里介绍一下Linux进程状态. Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个 ...

  2. JS判断当前手机类型

    window.onload = function () { var u = navigator.userAgent; if (u.indexOf('Android') > -1 || u.ind ...

  3. My First GitHub

    第一次使用github 在https://github.com/注册账号. 登陆之后,首先创建一个仓库(+ new repository),开源(public)的仓库是免费的,私人(private)的 ...

  4. 分针网—IT教育: jquery选择器的用法

    jQuery选择器是jQuery库的一大特色,用这些选择器不但可以省去繁琐的JavaScript 书写方式,还可以节省时间和效率,正是有这些jQuery选择器,才让我们更容易的操作JavaScript ...

  5. vs项目和msql不兼容解决方案

    当vs的工程项目加载了libmysql.lib 即:附加包含目录,附加库目录,附加依赖项都设置好之后,如过编译出现如下: error LNK2019: 无法解析的外部符号 _mysql_real_co ...

  6. 最新合购网源码net.asp程序 彩票合买功能采用全新内核、全新架构,更小巧、功能更强、更快、更安全稳定

    合买代购功能 可购彩种:福彩3D.排列3.重庆时时彩.天津时时彩.广东11选5.11运夺金.江苏快3.广西快3.拥有上百种玩法,更多彩种即将开发完成,更多的彩种不断开发更新中... 选号投注:建立追号 ...

  7. Springboot(一):入门篇

    什么是spring boot spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...

  8. 转:Java中的Clone()方法详解

    Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...

  9. GO的初始简书(一)简介安装

    已经玩了很长一段时间的golang了,做个gopher,下面我将逐步展示各种go语言的开发,从入门开始哦,完全是凭着自己学习和实践的结果展示,如果有说的不对的,请指正. 简介 go语言是由Google ...

  10. Python之向日志输出中添加上下文信息

    除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定信息,如:远程客户端的IP地址和用户名.这里我们 ...