linux SSH 隧道打通链接

一 什么是SSH隧道

  首 先看下面这张图,咱们所面临的大部分状况都和它相似。咱们的电脑在右上角,经过公司带有防火墙功能的路由器接入互联网(固然可能还有交换机什么的在中间连 接着你和路由器,可是在咱们的问题中交换机并不起到什么关键性的做用)。左下脚的部分是一个网站的服务器,它是咱们公司防火墙策略的一部分,也就是说公司 不但愿咱们访问这个服务器。在左上还有一台机器,它也是属于咱们的。可是这台机器并不在咱们公司里面,换句话说他不受到公司防火墙的限制。最后也是最重 要的一点是,咱们可以在公司经过互联网直接访问这台机器。或者说这台位于公司防火墙外面的机器须要拥有一个独立的互联网IP,同时公司的防火墙规则不会屏 蔽这台机器,而且这台机器运行着一个OpenSSH服务器。html

 

现 在,咱们清楚地知道了本身所处的网络环境。而且不难理解咱们在公司没法访问那个服务器的缘由是:线路A-B-C上A-B之间的防火墙屏蔽了对那个服务器的 访问。与此同时,咱们也很快注意到,线路A-B-D之间、D-C之间是不受阻碍的。相信你已经想到了,在A-B之间的防火墙不会屏蔽对机器d的访问。所以 咱们能够经过机器d创建一个通道A-B-D-C,从而访问到机器c上的数据。服务器

这条通道能够用不少技术来创建,这里咱们仅仅介绍如何使用SSH服务器来创建这样一个通道-他被称为SSH隧道。网络

2、创建SSH隧道

在咱们计划创建一个本地SSH隧道以前,咱们必须清楚下面这些数据:ssh

  1. 中间服务器d的IP地址
  2. 要访问服务器c的IP地址
  3. 要访问服务器c的端口

如今,咱们把上面这张图变得具体一些,给这些机器加上IP地址。而且根据下面这张图列出咱们的计划:ide

  1. 须要访问234.234.234.234的FTP服务,也就是端口21
  2. 中间服务器是123.123.123.123

如今咱们使用下面这条命令来达成咱们的目的网站

ssh -N -f -L 2121:234.234.234.234:21 123.123.123.123
ftp localhost:2121 # 如今访问本地2121端口,就能链接234.234.234.234的21端口了

这里咱们用到了SSH客户端的三个参数,下面咱们一一作出解释:spa

  • -N 告诉SSH客户端,这个链接不须要执行任何命令。仅仅作端口转发
  • -f 告诉SSH客户端在后台运行
  • -L 作本地映射端口,被冒号分割的三个部分含义分别是最后一个参数是咱们用来创建隧道的中间机器的IP地址(IP: 123.123.123.123)
    • 须要使用的本地端口号
    • 须要访问的目标机器IP地址(IP: 234.234.234.234)
    • 须要访问的目标机器端口(端口: 21)

咱们再重复一下-L参数的行为。-L X:Y:Z的含义是,将IP为Y的机器的Z端口经过中间服务器映射到本地机器的X端口.net

在这条命令成功执行以后,咱们已经具备绕过公司防火墙的能力,而且成功访问到了咱们喜欢的一个FTP服务器了。3d

3、AutoSSH

使用SSH的方式不够稳定,使用AutoSSH能够自动在链接断开时自动重连,再把AutoSSH加入系统服务自动启动,则能够作到稳定的链接。orm

autossh是个很好的东西,他是用来保证SSH隧道链接稳定性的。在Ubuntu下安装

apt-get install autossh

使用方法很简单,好比原来直接用ssh的命令:

ssh -N -v -D localhost:8527 root@remote_ssh_server -p remote_ssh_port

如今改为:

autossh -M 5122 -N -v -D localhost:8527 root@remote_ssh_server -p remote_ssh_port

本文出自http://www.javashuo.com/article/p-qbqtzrxe-bp.html

autossh原理解析参考https://blog.csdn.net/wesleyflagon/article/details/85304336

相关文章
相关标签/搜索