钢铁知识库,一个学习python爬虫、数据分析的知识库。人生苦短,快用python。
xshell是什么
通俗点说就是一款强大ssh远程软件,可以方便运维人员对服务器进行管理操作,功能很多朋友们自行探索,今天只聊其中一个功能点那就是隧道转发。
隧道转移是什么
xshell隧道转移到底是干嘛的,有什么作用呢?隧道是一种技术,它允许你通过一个加密连接发送原本不安全的流量。这就像在不安全的网络上建立了一个安全的“隧道”。主要用于在不安全的网络中安全地传输数据。这种技术通过在客户端和服务器之间建立一个加密的网络连接,来保护数据的安全性和隐私性。
xshell隧道转发的三种类型:
Xshell的隧道转发功能有三种主要类型:本地端口转发(Local Port Forwarding)、远程端口转发(Remote Port Forwarding)和动态端口转发(Dynamic Port Forwarding)。下面是每种类型的详细解释:
- 本地拨出 Local(Outgoing):
- 作用:将本地计算机的一个端口连接到远程服务器的一个指定端口上。
- 应用场景:当你想从本地机器安全地访问位于远程服务器上的服务(如数据库、web服务等)时使用。
- 工作原理:通过SSH连接,用户在本地机器上指定一个端口,Xshell会创建一个隧道,把这个本地端口上的所有数据发送到远程服务器的指定端口。
- 远程传入Remote(Incoming):
- 作用:将远程服务器的一个端口连接到本地计算机的一个指定端口上。
- 应用场景:当远程服务器需要访问你的本地机器上的服务(例如,你在本地运行的web应用)时使用。
- 工作原理:通过SSH连接,用户在远程服务器上指定一个端口,Xshell会创建一个隧道,把这个远程端口上的所有数据发送到本地计算机的指定端口。
- Dynamic(SOCKS4/5):
- 作用:建立一个SOCKS代理服务器,通过这个代理服务器转发网络流量。
- 应用场景:常用于访问通过常规网络无法直接访问的服务,比如绕过网络审查或访问局域网内的资源。
- 工作原理:用户指定一个本地端口用作SOCKS代理,Xshell会将通过这个端口的数据通过SSH隧道转发到任意目的地。这种方式提供了更多的灵活性,可以转发到多个远程服务。
使用场景
网上有很多使用场景,有通过隧道访问内网服务器的;有通过转发访问某个web页面的;还有通过隧道代理绕过无法访问的网络资源。
今天我说一个目前自己经常在用的使用场景,借助远程传入功能实现远程服务器某些网络资源无法访问的问题。
通过转发绕过限制网络
原理大概是这样:我在阿里云有一台深圳节点的ECS,工作原因需要下载k8s集群中某些资源,因为网络限制会导致下载超时,而我本地PC刚好没有网络限制可以直接下载,这时可以通过xshell远程传入功能将服务器http_proxy转发到本地计算机,从而实现网络资源下载。
1.开始转发前
可以看到在没有配置转移规则前,curl连接访问是超时的。
2.配置转移规则
先在服务器上执行export http_proxy将请求代理转发到9999,
export http_proxy=http://127.0.0.1:9999/ https_proxy=http://127.0.0.1:9999/
然后在xshell会话中,转移规则空白处点击添加,转移规则如下:
类型(方向):远程(传入)
源主机:localhost(服务器代理传入的ip)
侦听端口:9999(服务器传入的端口)
目标主机:localhost(本机fiddler)
目标端口:8888(fiddler监听的端口)
同时在本机打开fiddler准备好接受请求
3.完成转发配置后
完成配置后再次访问可以看到不再超时,可以正常获取到头信息。
---- 钢铁 648403020@qq.com 2024.01.21
到此使用场景演示就结束了,隧道转发功能还有很多使用技巧,朋友们可以慢慢挖掘。
除了xshell有隧道转发功能外,securecrt也有这个功能,操作原理是一样,这里就不再做另外演示。
今天先分享到这里。