如何使用ssh建立隧道
发布网友
发布时间:2022-04-22 17:03
我来回答
共1个回答
热心网友
时间:2022-05-05 06:02
这条通道可以用很多技术来建立,这里我们仅仅介绍如何使用SSH服务器来建立这样一个通道-他被称为SSH隧道。
如何建立本地SSH隧道
在我们计划建立一个本地SSH隧道之前,我们必须清楚下面这些数据:
中间服务器d的IP地址
要访问服务器c的IP地址
要访问服务器c的端口
现在,我们把上面这张图变得具体一些,给这些机器加上IP地址。并且根据下面这张图列出我们的计划:
需要访问234.234.234.234的FTP服务,也就是端口21
中间服务器是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客户端的三个参数,下面我们一一做出解释:
-N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
-f 告诉SSH客户端在后台运行
-L 做本地映射端口,被冒号分割的三个部分含义分别是
需要使用的本地端口号
需要访问的目标机器IP地址(IP: 234.234.234.234)
需要访问的目标机器端口(端口: 21)
最后一个参数是我们用来建立隧道的中间机器的IP地址(IP: 123.123.123.123)
我们再重复一下-L参数的行为。-L X:Y:Z的含义是,将IP为Y的机器的Z端口通过中间服务器映射到本地机器的X端口。
在这条命令成功执行之后,我们已经具有绕过公司防火墙的能力,并且成功访问到了我们喜欢的一个FTP服务器了。
如何建立远程SSH隧道
通过建立本地SSH隧道,我们成功地绕过防火墙开始下载FTP上的资源了。那么当我们在家里的时候想要察看下载进度怎么办呢?大多数公司的网络是通过路由器接入互联网的,公司内部的机器不会直接与互联网连接,也就是不能通过互联网直接访问。通过线路D-B-A访问公司里的机器a便是不可能的。也许你已经注意到了,虽然D-B-A这个方向的连接不通,但是A-B-D这个方向的连接是没有问题的。那么,我们能否利用一条已经连接好的A-B-D方向的连接来完成D-B-A方向的访问呢?答案是肯定的,这就是远程SSH隧道的用途。
与本地SSH一样,我们在建立远程SSH隧道之前要清楚下面几个参数:
需要访问内部机器的远程机器的IP地址(这里是123.123.123.123)
需要让远程机器能访问的内部机器的IP地址(这里因为是想把本机映射出去,因此IP是127.0.0.1)
需要让远程机器能访问的内部机器的端口号(端口:22)
在清楚了上面的参数后,我们使用下面的命令来建立一个远程SSH隧道
ssh -N -f -R 2222:127.0.0.1:22 123.123.123.123
现在,在IP是123.123.123.123的机器上我们用下面的命令就可以登陆公司的IP是192.168.0.100的机器了。
ssh -p 2222 localhost
-N,-f 这两个参数我们已经在本地SSH隧道中介绍过了。我们现在重点说说参数-R。该参数的三个部分的含义分别是:
远程机器使用的端口(2222)
需要映射的内部机器的IP地址(127.0.0.1)
需要映射的内部机器的端口(22)
例如:-R X:Y:Z 就是把我们内部的Y机器的Z端口映射到远程机器的X端口上。
建立SSH隧道的几个技巧
自动重连
隧道可能因为某些原因断开,例如:机器重启,长时间没有数据通信而被路由器切断等等。因此我们可以用程序控制隧道的重新连接,例如一个简单的循环或者使用 djb’s daemontools . 不管用哪种方法,重连时都应避免因输入密码而卡死程序。关于如何安全的避免输入密码的方法,请参考我的 如何实现安全的免密码ssh登录 。这里请注意,如果通过其他程序控制隧道连接,应当避免将SSH客户端放到后台执行,也就是去掉-f参数。
保持长时间连接
有些路由器会把长时间没有通信的连接断开。SSH客户端的TCPKeepAlive选项可以避免这个问题的发生,默认情况下它是被开启的。如果它被关闭了,可以在ssh的命令上加上-o TCPKeepAlive=yes来开启。
另一种方法是,去掉-N参数,加入一个定期能产生输出的命令。例如: top或者vmstat。下面给出一个这种方法的例子:
ssh -R 2222:localhost:22 123.123.123.123 "vmstat 30"
检查隧道状态
有些时候隧道会因为一些原因通信不畅而卡死,例如:由于传输数据量太大,被路由器带入stalled状态。这种时候,往往SSH客户端并不退出,而是卡死在那里。一种应对方法是,使用SSH客户端的ServerAliveInterval和ServerAliveCountMax选项。ServerAliveInterval会在隧道无通信后的一段设置好的时间后发送一个请求给服务器要求服务器响应。如果服务器在ServerAliveCountMax次请求后都没能响应,那么SSH客户端就自动断开连接并退出,将控制权交给你的监控程序。这两个选项的设置方法分别是在ssh时加入-o ServerAliveInterval=n和-o ServerAliveCountMax=m。其中n, m可以自行定义。
如何将端口绑定到外部地址上
使用上面的方法,映射的端口只能绑定在127.0.0.1这个接口上。也就是说,只能被本机自己访问到。如何才能让其他机器访问这个端口呢?我们可以把这个映射的端口绑定在0.0.0.0的接口上,方法是加上参数-b 0.0.0.0。同时还需要打开SSH服务器端的一个选项-GatewayPorts。默认情况下它应当是被打开的。如果被关闭的话,可以在/etc/sshd_config中修改GatewayPorts no为GatewayPorts yes来打开它。
如何寻找中间服务器
如果你家里使用ADSL上网,多半你会比较幸运。一般的ADSL(例如 联通 的ADSL)都是有互联网地址的。你只需要在家里的路由器上一台装有OpenSSH server机器的SSH端口映射出去即可。同时一些提供SSH访问的虚拟主机也可以用于这一用途。例如: Hostmonser 或者 Dreamhost .
通过SSH隧道建立SOCKS服务器
如果我们需要借助一台中间服务器访问很多资源,一个个映射显然不是高明的办法(事实上,高明确实没有用这个方法)。幸好,SSH客户端为我们提供了通过SSH隧道建立SOCKS服务器的功能。
通过下面的命令我们可以建立一个通过123.123.123.123的SOCKS服务器。
ssh -N -f -D 1080 123.123.123 # 将端口绑定在127.0.0.1上
ssh -N -f -D 0.0.0.0:1080 123.123.123.123 # 将端口绑定在0.0.0.0上
通过SSH建立的SOCKS服务器使用的是SOCKS5协议,在为应用程序设置SOCKS代理的时候要特别注意。
总结
至此,我们已经对如何利用SSH隧道有一个基本的认识了。现在,文章开始时的那些问题应该迎刃而解了吧。这里要特别说一下,由于SSH隧道也使用了SSH加密协议,因此是不会被防火墙上的内容过滤器监控到的。也就是说一切在隧道中传输的数据都是被加密的。当然,离开隧道后的数据还是会保持自己原有的样子,没有加密的数据还是会被后续的路由设备监控到。
如何使用ssh建立隧道
需要访问内部机器的远程机器的IP地址(这里是123.123.123.123)需要让远程机器能访问的内部机器的IP地址(这里因为是想把本机映射出去,因此IP是127.0.0.1)需要让远程机器能访问的内部机器的端口号(端口:22)在清楚了上面的参数后,我们使用下面的命令来建立一个远程SSH隧道 ssh -N -f -R 2222:127...
如何对光传输设备进行调试和维护?
对光传输设备进行调试和维护,需要掌握以下关键点:1. **熟悉设备性能**:深入了解OTN/DWDM等光传输产品的性能特点,确保能够熟练使用设备。2. **按规范操作**:依据产品说明书和维护手册进行调试和维护,确保操作步骤正确无误。3. **故障排查**:掌握常见故障现象及处理方法,能够迅速定位问题并进行修复。4. **性能监测**:定期监测设备性能指标,确保设备运行状态良好,及时发现并解决潜在问题。5. **专业培训**:参与相关培训,不断提升自身技能水平,以更好地应对各种挑战。通过以上措施,可以确保光传输设备的稳定运行,提升网络可靠性和智能…对光传输设备进行调试和维护需要掌握一定的专业知识和技术,包括光功率计、光谱分析仪等测试仪器的使用,以及对光传输系统的工作原理和性能指标的深入理解。深圳市光派通信技术有限公司提供专业的技术支持和服务,可为客户提供全面的光传输设备...
python渗透测试入门之ssh隧道
正式实验步骤如下:1、在Kali虚拟机上启动Web服务。2、在Kali虚拟机上启动SSH服务。3、在Macbook上运行脚本,其中IP地址192.168.0.103分别代表SSH服务器与Web服务器,--user与--password参数则为SSH服务器的用户名与密码。4、在SSH服务器上验证隧道功能的正确性。通过此实验,能够直观地理解SSH隧道的...
如何在xshell中创建一个SSH隧道
1、打开xshell,尚未安装的用户,可以在xshell中文网下载xshell。2、如果会话对话框没有自动打开,点击“文件”菜单中的“打开”3、在会话对话框中,在会话中单击“连接”按钮连接到远程主机,然后在页面中点击“属性”按钮。4、在属性对话框中的类别中选择“SSH—隧道”5、在TCP/IP转移中,点击下方的...
SSH隧道及其使用
如果希望通过本地计算机,让远程服务器 remote 可以连接到 server 上的服务,可以使用SSH远程转发。使用SSH远程转发一个典型的用途是,在企业内部开一个后门,让公网的计算机可以访问到企业的某个内部服务,这个是有一定风险的,使用的时候需要特别小心。在OpenSSH中,远程转发通过 -R 参数开启,在本地计算...
在ssh中,知道怎么来使用ssh隧道.通过
1 打开secureCRT,连接到服务器(本例服务器IP:192.168.102.131),然后打开会话选项。2 进入会话选项后,找到“端口转发”,点击“增加(A)..”。然后填写三个项,a.名称; b.本地端口5901; c.远程端口5901;d.点击确认,如下图。 这样,本地的5901端口将与远程服务器的5901通过ssh隧道连接,...
如何利用XShell隧道通过跳板机连接内网机器
1.首先建立跳板机的连接,并配置隧道。打开XShell点击文件菜单再点击新建弹出新建会话属性窗口,名称就取为跳板机,端口是22,主机填写前面假设的ip地址。2.点击用户身份验证,填写登录跳板机的SSH用户名和密码。3.为防止跳板机连接过久自动断开,所以这里添加登录脚本直接发送top命令。点击登录脚本,勾选上...
ssh端口转发(跳板机)实战详解
1)模拟服务器C不允许A用户连接,在服务器C上输入以下口令:此时,从A(121)用ssh命令连接服务器C是拒绝的:2)开启端口转发:首先,我们在机器A上确认已经开启的端口有哪些:从上图中我们可以看出,2222端口没有被占用,所以我们可以选择使用的2222端口:接着我们建立本地转发的隧道(A上输入以下命令...
使用SSH TUNNEL 打通公司和家里的网络
一般情况下的对应方法:本文的目的就是使用 SSH TUNNEL 这项技术解决上面的问题,也就是打通所谓的 "公司内网" 和 "家庭内网"。经常远程连接 Linux 服务器的小伙伴,对于 ssh 这个命令应该不陌生吧。它还可以不执行远程指令只建立一条和远程服务器之间的连接,也就是形成了一条通道,在这条...
ssh隧道转发解析与内网穿透RDP、简易VPN实现
如在A上设置代理,通过B加密访问网络,突破限制。利用这些转发,我们可以实现内网穿透,如RDP远程桌面,命令如下:将本地3389端口转发到公网服务器的33333,确保服务器的防火墙放行。同样地,简易公司VPN可通过SSH将公司22端口转发至7890端口的动态代理,设置浏览器或应用使用这个代理,即可访问公司内网资源。
Windows安装SSH服务并实现无公网IP远程ssh连接
本地连接测试使用用户名和密码(如Windows账户)在SSH客户端(如Xshell)测试127.0.0.1:22,确认本地连接成功并执行命令。安装Cpolar工具访问Cpolar官网(cpolar.com/)注册并下载Windows客户端。登录后,配置Cpolar以便管理和创建TCP隧道。配置SSH公网地址在Cpolar的隧道管理中创建TCP隧道,获取生成的公网...