转载: 端口映射
大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多。不过其实除了这个功能,它的隧道转发功能更是吸引人。下面是个人根据自己的需求以及在网上查找的资料配合自己的实际操作所得到的一些心得。
SSH/plink命令的基本资料:ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host ssh -C -f -N -g -D listen_port user@Tunnel_Host相关参数的解释:-f Fork into background after authentication.后台认证用户/密码,通常和-N连用,不用登录到远程主机。
-L port:host:hostport将本地机(客户机)的某个端口转发到远端指定机器的指定端口映射。 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接。 可以在配置文件中指定端口的转发。 只有 root 才能转发特权端口。 IPv6 地址用另一种格式说明: port/host/hostport -R port:host:hostport将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口。 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接。 可以在配置文件中指定端口的转发。 只有用 root 登录远程主机才能转发特权端口。 IPv6 地址用另一种格式说明: port/host/hostport -D port指定一个本地机器 “动态的‘’ 应用程序端口转发。 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接。 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器。 只有 root 才能转发特权端口。 可以在配置文件中指定动态端口的转发。
-C Enable compression.压缩数据传输。
-N Do not execute a shell or command.不执行脚本或命令,通常与-f连用。
-g Allow remote hosts to connect to forwarded ports.在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。注:这个参数我在实践中似乎始终不起作用。
建立本地SSH隧道例子在我们计划建立一个本地SSH隧道之前,我们必须清楚下面这些数据:1. 中间服务器d的IP地址2. 要访问服务器c的IP地址3. 要访问服务器c的端口现在,我们把上面这张图变得具体一些,给这些机器加上IP地址。并且根据下面这张图列出我们的计划:
1. 需要访问234.234.234.234的FTP服务,也就是端口21 2. 中间服务器是123.123.123.123现在我们使用下面这条命令来达成我们的目的1.ssh -N -f -L 2121:234.234.234.234:21 123.123.123.123 2.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隧道1.ssh -N -f -R 2222:127.0.0.1:22 123.123.123.123现在,在IP是123.123.123.123的机器上我们用下面的命令就可以登陆公司的IP是192.168.0.100的机器了。
1.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.下面给出一个这种方法的例子:1.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来打开它。
通过SSH隧道建立SOCKS服务器如果我们需要借助一台中间服务器访问很多资源,一个个映射显然不是高明的办法(事实上,高明确实没有用这个方法)。幸好,SSH客户端为我们提供了通过SSH隧道建立SOCKS服务器的功能。
通过下面的命令我们可以建立一个通过123.123.123.123的SOCKS服务器。
1.ssh -N -f -D 1080 123.123.123 # 将端口绑定在127.0.0.1上2.ssh -N -f -D 0.0.0.0:1080 123.123.123.123 # 将端口绑定在0.0.0.0上通过SSH建立的SOCKS服务器使用的是SOCKS5协议,在为应用程序设置SOCKS代理的时候要特别注意。
相关推荐
主要介绍了SSH端口转发实现内网穿透的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
内网穿透技术是一种让内网中的设备能够被公网访问的技术,尤其在许多用户因为网络环境限制,无法直接从外部访问内部网络服务时显得尤为重要。本文将深入探讨C++实现的内网穿透工具,该工具无需公网IP,具备小巧、...
《Windows本地与云端服务器进行SSH与FRP内网穿透详解》 SSH(Secure Shell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他网络服务。它基于加密技术,确保数据传输的安全性。在Windows系统中...
综上所述,“wyc网云穿内网穿透”是一个帮助用户打破内网屏障,实现公网与内网间通信的工具。通过理解其工作原理和应用场景,我们可以更好地利用这项技术提高工作效率并解决远程访问问题。不过,使用时务必注意安全...
再细想一下,发现ssh隧道、或者说端口转发,竟然实现了正向代理、反向代理和内网穿透三种常用的网络功能,更佩服其功能的强大和使用中的便利。 ssh有三种端口转发模式,本文一一对其做简要介绍。 本地转发 本地端口...
在家庭或公司网络中,通常使用NAT将内部网络与外部互联网隔离,而内网穿透工具则可以创建一个通道,让公网用户能够访问到内网中的服务,如Web服务器、FTP服务器等。 Node.js基于socksv5的内网穿透工具,顾名思义,...
- **安全远程访问**:通过SSH端口转发,可以安全地访问内网资源,所有数据都经过加密,增加了安全性。 - **负载均衡和代理**:端口转发也可以用于分发流量到多个服务器,或者作为代理服务隐藏后端服务器的IP地址。 ...
FastTunnel 高性能跨平台内网穿透工具,使用它可以实现将...开源免费跨平台 内网穿透 远程内网电脑 自定义域名访问内网站点 反向代理内网服务 http代理 类花生壳 端口转发 微信 小程序 frp NAT ssh proxy tunnel ngork
7. **其他端口转发工具**:除了fpipe,还有许多其他的端口转发工具,如SSH的`-L`选项,OpenSSH的`sshuttle`,以及在Windows下的`PortProxy`等,它们各有特点和适用场景,可以根据具体需求选择合适的工具。...
NAT穿透涉及“端口转发”,使外网请求能够到达内网主机。 3. **natapp功能**:natapp提供了免费和付费的服务,支持TCP、UDP协议的穿透,可用于各种应用,如HTTP、HTTPS、FTP、SSH、远程桌面等。用户只需要在内网...
内网穿透,也被称为端口转发或NAT穿透,是一种技术,允许位于内网(即非直面公网的设备)的服务器或服务被外部网络访问。在家庭或企业网络环境中,许多设备通常通过路由器接入互联网,这使得它们的IP地址对外不可见...
proxy适用场景 ssh本地端口转发,解决 【A可以主动连接B,B可以主动连接C的场景中,在A机器上间接连接C的需求】
这条命令会创建一个隧道,将外网的请求转发到本地8080端口。运行后,Ngrok会显示一个公开的URL,如`http://xxxxx.ngrok.io`,任何拥有这个URL的人都可以访问到你的内网Web服务器。 值得注意的是,免费版的Ngrok可能...
这条命令开启后台模式(-f),不执行实际的shell命令,而是设置端口转发(-N),创建反向SSH隧道(-R),将服务器A的1111端口映射到内网主机B的22端口。如果服务器A的SSH监听在非标准端口22,则需指定 `-p 22`。 3....
在本文中,我们将详细探讨如何使用Bitvise SSH Server在Windows上搭建SSH服务,以及它与内网穿透和端口映射的关系。 首先,我们来看"bitvise-Server-8.37.exe"这个文件,它是Bitvise SSH Server的安装程序。下载并...
开源免费跨平台 内网穿透 远程内网电脑 自定义域名访问内网站点 反向代理内网服务 http代理 类花生壳 端口转发 微信 小程序 frp NAT ssh proxy tunnel ngork
开源免费跨平台 内网穿透 远程内网电脑 自定义域名访问内网站点 反向代理内网服务 http代理 类花生壳 端口转发 微信 小程序 frp NAT ssh proxy tunnel ngork
内网穿透工具是一种用于突破内网限制,使得内网服务可以被公网访问的软件。本文将详细介绍`frp_0.20.0_windows.rar`这个内网穿透工具的使用和相关知识点。 `frp`全称为`Frugal Reverse Proxy`,它是一个轻量级且...
内网穿透工具FRP(全称:Fast Reverse Proxy)是一种高效、轻量级的网络穿透解决方案,主要用于解决在内网环境下,外部网络无法直接访问内网服务的问题。它通过搭建一个代理服务器,允许内网中的设备通过这个代理来...