# SSH端口转发之上网代理、正向代理、反向代理用法

SSH端口转发之上网代理、正向代理、反向代理用法

文章目录

  • SSH端口转发之上网代理、正向代理、反向代理用法
    • 1 ssh参数说明:
    • 2 一般用法:
    • 3 用法范例:
    • 4 示例与解释:
    • 5 SSH概念详解
      • **5.1. SSH端口转发的概念**
      • **5.2. SSH端口转发的类型**
        • **5.2.1 本地端口转发**
        • **5.2.2 远程端口转发**
        • **5.2.3 动态端口转发**
      • **5.3. SSH端口转发的用途**
        • **5.3.1 安全远程访问**
        • **5.3.2 跨越网络限制**
        • **5.3.3 加密流量传输**
        • **5.3.4 跨越 NAT 网络**
        • **5.3.5 安全代理**
      • **5.4 结论**

上网代理(动态端口转发)可用于代理上网(socks)

正向代理(本地端口转发)与反向代理(远程端口转发)都是端口到端口的转发,一般用于解决网络安全、网络防火墙限制、NAT等问题。

1 ssh参数说明:

-C:启用压缩功能。SSH 会尝试使用压缩来缩小传输的数据量。这是通用选项,所有命令参数适用---------------------------------------# 上网代理(动态端口转发):
-D:动态端口转发,就是通过这个端口的流量通通转发到远程主机,然后通过远程主机转发出去,一般用于代理上网。# 正向代理(本地端口转发):
-L:用于将本地主机的新建端口转发到远程主机。这意味着你可以将本地机器的一个端口映射到远程主机的一个端口。一般用于远程主机没有开放端口的情况下,通过ssh建立本地侦听端口,通过本地侦听端口转发到远程主机端口。# 反向代理(远程端口转发):
-R:用于将远程主机的新建端口转发到本地主机。这意味着你可以将远程机器的一个端口映射到本地机器的一个端口。这个和-L达到的功能是一样的,只是建立侦听端口主机不一样,-L在本地主机建立,-R在远程主机建立,这个主要考虑ssh运行的便利性与可行性,比如是否有公网地址,是否在NAT后面,是否的密码安全担忧等。----------------------------------------g:无此参数默认监听地址是127.0.0.1,添加此参数监听0.0.0.0。在有-L -R -D参数时都可以使用。----------------------------------------f:后台运行-N:表示不执行远程命令,通常与端口转发一起使用。当您只需要转发端口(如设置隧道)而不需要在远程机器上启动 Shell 时,这个选项很有用。无此选项时,你可能需要在命令后面加上需要执行的command

2 一般用法:

# 远程执行命令:
ssh  用户@远程ssh主机地址  -p 远程ssh主机ssh端口  远程命令# 上网代理(动态端口转发):
ssh  -CD 本机主机侦听端口                                   -g -fN  用户@远程主机ssh地址  -p 远程主机ssh端口# 正向代理(本地端口转发):
# 注:【远程目标X主机】 与 【远程主机】 可以是同一台主机,也可以不是同一台主机
ssh  -CL 本机主机侦听端口:远程目标X主机地址:远程目标X主机端口  -g -fN  用户@远程主机ssh地址  -p 远程主机ssh端口# 反向代理(远程端口转发):
# 注:【本地目标X主机】 与 【本机主机】 可以是同一台主机,也可以不是同一台主机
ssh  -CR 远程主机侦听端口:本地目标X主机地址:本地目标X主机端口  -g -fN  用户@远程主机ssh地址  -p 远程主机ssh端口

3 用法范例:

# 登录:
ssh  root@8.8.8.227---------------------------------------# 执行远程命令,运行完立即退出
ssh  root@8.8.8.227  uptime# 执行远程命令,运行完不退出
ssh  -f  root@8.8.8.227  uptime    #-- 一般运行守护进程,这里的uptime程序是无意义的,你可以换成类似nginx守护进程---------------------------------------# 上网代理(动态端口转发),在127.0.0.1监听2233,前台运行(exit退出就关闭)
ssh  -D 2233  root@8.8.8.227# 上网代理(动态端口转发),在0.0.0.0监听2233
ssh  -D 2233  -g  root@8.8.8.227# 上网代理(动态端口转发),在0.0.0.0监听2233,后台运行
ssh  -D 2233  -g  -fN  root@8.8.8.227# 上网代理(动态端口转发),在0.0.0.0监听2233,后台运行,启用压缩
ssh  -CD 2233  -g  -fN  root@8.8.8.227
# 将代理服务器设置为:'socks5://127.0.0.1:2233'或'socks5://本机地址:2233',即可实现代理上网。
# 经测试,这里即可以使用socks4也可以使用socks5---------------------------------------# 正向代理(本地端口转发),在0.0.0.0监听2233,后台运行,启用压缩
ssh  -CL 2233:47.1.1.132:80  -g  -fN  root@8.8.8.227
# 在本地主机访问以下地址,会返回相同的结果:
#   curl http://47.1.1.132:80
#   curl http://127.0.0.1:80
#   curl http://本地主机:80# 反向代理(远程端口转发),在0.0.0.0监听2233,后台运行,启用压缩
ssh  -CR 2233:47.1.1.132:80  -g  -fN  root@8.8.8.227
# 在远程主机访问以下地址,会返回相同的结果:
#   curl http://47.1.1.132:80
#   curl http://127.0.0.1:80
#   curl http://远程主机:80

4 示例与解释:

ssh -L 6006:127.0.0.1:6006 -gCN  root@connect.bjc1.com -p 34748

解释:

-L 6006:127.0.0.1:6006:这是本地端口转发的选项。它指定了一个本地端口转发规则,具体分为以下几部分:6006:本地机器上的端口号(您可以在本地机器上连接这个端口)。
127.0.0.1:远程机器上的目标地址,这里是远程机器的回环地址。
6006:远程机器上的目标端口号,您希望远程机器上的连接被转发到此端口。
这意味着所有连接到您本地机器上的 6006 端口的数据都会被转发到远程机器上的 127.0.0.1 地址的 6006 端口。

5 SSH概念详解

以下转自:https://cloud.tencent.com/developer/article/2324459

SSH(Secure Shell)是一种加密的网络协议,用于安全地远程登录和执行命令。除了远程登录外,SSH还具备其他功能,其中一个重要的功能就是端口转发。SSH端口转发是一种将网络流量从一个端口转发到另一个端口的机制,通过SSH通道进行安全传输。在本文中,我们将详细介绍SSH端口转发的概念、类型和用途。

5.1. SSH端口转发的概念

SSH端口转发是一种通过SSH协议在本地和远程主机之间建立安全通道,实现端口之间的数据转发。它允许您在不直接访问目标主机的情况下,通过安全的SSH连接来访问该主机上的服务。通过SSH端口转发,您可以将本地端口与远程主机上的服务端口相关联,使得在本地主机上运行的应用程序能够通过SSH隧道与远程主机上的服务进行通信。

5.2. SSH端口转发的类型

SSH端口转发有三种常见的类型:本地端口转发(Local Port Forwarding)、远程端口转发(Remote Port Forwarding)和动态端口转发(Dynamic Port Forwarding)。

5.2.1 本地端口转发

本地端口转发是最常用的SSH端口转发类型之一。它允许将本地主机上的一个端口转发到远程主机上的另一个端口。当您需要通过SSH访问位于防火墙后面或者只能在远程主机上访问的服务时,本地端口转发非常有用。通过本地端口转发,您可以在本地主机上创建一个监听指定端口的SSH隧道,将该端口上的流量转发到远程主机上的指定端口。这样,您就可以通过本地主机上的该端口与远程主机上的服务进行通信。

5.2.2 远程端口转发

远程端口转发是另一种常见的SSH端口转发类型。它允许将远程主机上的一个端口转发到本地主机上的另一个端口。当您需要将远程主机上的某个服务映射到本地主机上,或者需要远程主机上的其他计算机访问本地主机上的服务时,远程端口转发非常有用。通过远程端口转发,您可以在远程主机上创建一个监听指定端口的SSH隧道,将该端口上的流量转发到本地主机上的指定端口。这样,远程主机上的流量就可以通过SSH隧道传输到本地主机上的指定端口,实现服务的访问。

5.2.3 动态端口转发

动态端口转发是SSH端口转发的另一种类型,也称为SSH动态代理。与本地端口转发和远程端口转发只能将一个端口进行转发不同,动态端口转发可以创建一个动态代理通道,将本地主机上的多个端口转发到远程主机上。通过动态端口转发,您可以在本地主机上创建一个监听指定端口的SSH隧道,将本地主机上的流量通过SSH通道转发到远程主机上,然后再由远程主机发送到最终的目标地址。动态端口转发通常用于代理服务器或通过中间节点访问特定网络资源。

5.3. SSH端口转发的用途

SSH端口转发具有广泛的用途,以下是其中一些常见的应用场景:

5.3.1 安全远程访问

通过SSH端口转发,您可以安全地访问位于防火墙后面的远程主机或仅在内部网络中可访问的服务。通过建立SSH隧道,您可以将本地主机上的某个端口转发到远程主机上,然后通过SSH连接进行访问。这样,您就可以使用SSH协议的加密和身份验证功能来保护远程访问的安全性。

5.3.2 跨越网络限制

在某些情况下,您可能面临着网络限制,无法直接访问某些服务或资源。使用SSH端口转发,您可以绕过这些限制,通过建立安全的SSH通道将流量转发到允许访问的网络上。这对于跨越防火墙或访问受限制的网络资源非常有用。

5.3.3 加密流量传输

SSH端口转发不仅仅用于访问远程服务,还可以用于加密流量传输。通过将本地主机上的流量通过SSH隧道转发到远程主机上,然后再由远程主机发送到最终的目标地址,您可以确保数据在传输过程中受到SSH协议的加密保护。这对于传输敏感数据或在不受信任的网络上操作非常重要。

5.3.4 跨越 NAT 网络

NAT(Network Address Translation)是一种常见的网络配置,用于在私有网络和公共网络之间转换IP地址。当您需要在私有网络中访问公共网络上的服务时,NAT可能会导致问题。通过使用SSH端口转发,您可以将本地主机上的流量通过SSH隧道转发到公共网络上的服务。这样,您可以绕过NAT限制,实现私有网络与公共网络之间的通信。

5.3.5 安全代理

动态端口转发可以用作安全代理,通过建立动态代理通道将本地主机上的流量转发到远程主机上。这对于通过中间节点访问受限制的网络资源非常有用。通过SSH端口转发,您可以在本地主机上配置代理设置,使得所有的网络流量都通过SSH隧道转发到远程主机上,然后再由远程主机发送到最终的目标地址。

5.4 结论

SSH端口转发是一种强大而灵活的功能,通过安全的SSH连接,可以将流量从一个端口转发到另一个端口。本文详细介绍了SSH端口转发的概念、类型和用途。本地端口转发、远程端口转发和动态端口转发是SSH端口转发的三种常见类型,它们分别适用于不同的应用场景。通过SSH端口转发,您可以实现安全远程访问、跨越网络限制、加密流量传输、跨越NAT网络和安全代理等功能。

要使用SSH端口转发,您需要在本地主机和远程主机之间建立一个安全的SSH连接,并配置相应的端口转发规则。使用适当的命令和参数,您可以轻松地设置和管理SSH端口转发。

总而言之,SSH端口转发是网络安全和远程访问中重要的工具,它为用户提供了安全、灵活和可靠的数据传输和访问方式。通过合理的使用和配置,SSH端口转发可以帮助用户克服网络限制,保护数据安全,并提供高效的远程访问体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【java程序设计期末复习】chapter4 类和对象

类和对象 编程语言的几个发展阶段 (1)面向机器语言 计算机处理信息的早期语言是所谓的机器语言,使用机器语言进行程序设计需要面向机器来编写代码,即需要针对不同的机器编写诸如0101 1100这样的指令序列。 (2&#x…

力扣爆刷第144天之二叉树四连刷(完结二叉搜索树改变树结构)

力扣爆刷第144天之二叉树五连刷(二叉搜索树) 文章目录 力扣爆刷第144天之二叉树五连刷(二叉搜索树)一、450. 删除二叉搜索树中的节点二、669. 修剪二叉搜索树三、108. 将有序数组转换为二叉搜索树四、538. 把二叉搜索树转换为累加…

【JavaScript】文件下载

文件下载的消息格式 服务器只要在响应头中加入 Content-Disposition: attachment; filename"kxx" 即可触发浏览器的下载功能其中: attachment 表示附件,浏览器看到此字段,触发下载行为(不同的浏览器下载行为有所区别&…

CCF-GESP 等级考试 2024年3月认证C++一级真题解析

2024年03月真题 1 单选题 第 1 题 C表达式(3 - 2) * 3 5的值是( )。 A. -13B. 8C. 2D. 0 正确答案:B. 8 解析: 首先计算括号中的表达式 (3 - 2),得到 (1)。接下来进行乘法运算 (1 * 3),得到 (3)。最后进行加法运算 (3 5)&…

Linux:Ubuntu系统配置本地apt仓库

Linux:Ubuntu系统配置本地apt仓库 文章目录 Linux:Ubuntu系统配置本地apt仓库挂载本地的光驱到指定的挂载目录编辑开机挂载配置文件检查开机挂载配置文件的语法是否正确检查开机设置是否成功对原有的sourece.list文件进行重命名使其失效使用命令自动生成…

【二叉树】力扣OJ题

文章目录 前言1. 翻转二叉树1.1 题目1.2 解题思路1.3 代码实现1.4 时空复杂度 2. 对称二叉树2.1 题目2.2 解题思路2.3 代码实现2.4 时空复杂度 3. 平衡二叉树3.1 题目3.2 解题思路3.3 代码实现3.4 时空复杂度 结语 前言 本篇博客主要介绍二叉树的经典 OJ 题,题目主…

MyBatis详细教程!!(入门版)

目录 什么是MyBatis? MyBatis入门 1)创建工程 2)数据准备 3)配置数据库连接字符串 4)写持久层代码 5)生成测试类 MyBatis打印日志 传递参数 MyBatis的增、删、改 增(Insert&#xff0…

有什么普通人可以做的赚钱软件?盘点9个适合普通人长期做的软件

在这个互联网高速发展的时代,智能手机已经成为我们生活中不可分割的一部分。众多APP的涌现,使得许多朋友都在寻求通过手机赚钱的方法。 然而,面对市面上琳琅满目的网上赚钱APP,我们该如何挑选呢?别担心,今…

功率电感设计方法2:实例

文章目录 1:美磁的选项手册截图2:设计步骤2.1:设计需求2.2:选择磁芯材料2.3:选择磁芯2.4 查询 A L A_{L} AL​自感系数2.5 初算匝数2.6重新校准验算感量 3:后续 绕线因子4:日常壁纸分享 参考手册链接 1&…

普通人转行程序员,最大的困难是找不到就业方向

来百度APP畅享高清图片 大家好,这里是程序员晚枫,小破站也叫这个名。 我自己是法学院毕业后,通过2年的努力才转行程序员成功的。[吃瓜R] 我发现对于一个外行来说,找不到一个适合自己的方向,光靠努力在一个新的行业里…

使用Java 将字节数组转成16进制的形式

概述 在很多场景下,需要进行分析字节数据,但是我们存起来的字节数据一般都是二进制的,这时候就需要我们将其转成16进制的方式方便分析。比如在做音视频的时候,需要看下我们传输的视频h264数据中是否有对应的I帧或者B帧等数据&…

纯前端实现将页面数据下载word文档中【包括图片,echarts图,表格,和对话 内容】

亲测真实有效 导出word步骤 在Vue中导出Word文档,可以使用第三方库file-saver和html-docx-js。首先需要安装这两个库: npm install file-saver html-docx-js --save "html-docx-js": "0.3.1","file-saver": "2.0.5…

HADOOP permission denied解决方法(如果你ssh已经确认没问题了)

网上各种方法都是让你去把ssh配置好,让权限chmod 755,但我怎么试都没有用。 并且我的ssh已经能让master登入slave了,这个本来就是没有问题的。不要再尝试了。 有另一种可能的报错,就是你的文件全都被锁住了。可以上slave机上看看…

07、SpringBoot 源码分析 - SpringApplication启动流程七

SpringBoot 源码分析 - SpringApplication启动流程七 初始化基本流程SpringApplication的prepareContext准备上下文postProcessApplicationContext处理applyInitializers初始化器初始化load SpringApplication的refreshContext刷新上下文refreshServletWebServerApplicationCon…

8.什么是HOOK

程序编译的本质是,首先计算机它只能看得懂机器码也就是只能看得懂数字,机器码学起来很费劲然后就创造了编译器这个东西,编译器它懂机器语言所以它可以跟机器沟通,而我们人可以跟编译器沟通,人跟编译器的语言就是各种各…

[Vulnhub]Vulnix 通过NFS挂载+SSH公钥免密登录权限提升

端口扫描 Server IP AddressPorts Open192.168.8.103TCP:22/tcp, 25/tcp, 79/tcp, 110/tcp, 111/tcp, 143/tcp, 512/tcp, 513/tcp, 514/tcp, 993/tcp, 995/tcp, 2049/tcp, 37522/tcp, 42172/tcp, 43219/tcp, 47279/tcp, 54227/tcp $ nmap -p- 192.168.8.103 -sV -sC --min-ra…

P1134 [USACO3.2] 阶乘问题

题目传送门&#xff1a; P1134 [USACO3.2] 阶乘问题 29分代码 #include<bits/stdc.h>using namespace std;int main() {int n;cin>>n;unsigned long long s1;for(int i1;i<n;i){s*i;while(s>10){if(s%100) s/10;else ss%10;}}cout<<s%10<<en…

MyBatis系统学习 - 使用Mybatis完成查询单条,多条数据,模糊查询,动态设置表名,获取自增主键

上篇博客我们围绕Mybatis链接数据库进行了相关概述&#xff0c;并对Mybatis的配置文件进行详细的描述&#xff0c;本篇博客也是建立在上篇博客之上进行的&#xff0c;在上面博客搭建的框架基础上&#xff0c;我们对MyBatis实现简单的增删改查操作进行重点概述&#xff0c;在MyB…

P459 包装类Wrapper

包装类的分类 1&#xff09;针对八种基本数据类型相应的引用类型——包装类。 2&#xff09;有了类的特点&#xff0c;就可以调用类中的方法。 Boolean包装类 Character包装类 其余六种Number类型的包装类 包装类和基本数据类型的相互转换 public class Integer01 {publi…

一文入门ZooKeeper

简介 官网&#xff1a;https://zookeeper.apache.org/index.html 分布式服务协调组件&#xff0c;Google Chubby的开源实现。解决分布式应用中的以下问题&#xff1a;配置管理、命名服务&#xff08;Naming Service&#xff09;、集群管理、统一命名服务、状态同步。 用于解决…