SSH正向连接和反向连接

2023-11-15

ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。

反向连接是什么?

平时大多数使用ssh命令是控制端主机主动连接受控端主机,通过这个连接控制端主机可以主动的向受控端主机发送一些请求,这称为正向连接。
反向连接则是指受控端主机主动连接控制端主机,通过这个连接控制端主机可以主动的向受控端主机发送一些请求。
使用-L和-R参数可以分别实现正向连接和反向连接。

ssh -L sourcePort:forwardToHost:onPort connectToHost

意思:连接主机connectToHost,监听本地的端口sourcePort,通过主机connectToHost,把到本地端口sourcePort的连接转发到主机forwardToHost的端口onPort。在这里插入图片描述
图中的两个例子:
your host是敲命令的主机。

  1. ssh -L 123:localhost:456 remotehost
    连接主机remotehost,监听本地的端口123,通过remotehost,把到本地端口123的连接转发到本地主机localhost的端口456。
  2. ssh -L 123:farawayhost:456 remotehost
    连接主机remotehost,监听本地的端口123,通过remotehost,把到本地端口123的连接转发到主机farawayhost的端口456。

ssh -R sourcePort:forwardToHost:onPort connectToHost

意思:连接主机connectToHost,监听远程主机connectToHost的端口sourcePort,把到远程主机connectToHost的端口sourcePort的连接转发到主机forwardToHost的端口onPort。
在这里插入图片描述
图中的两个例子:

  1. ssh -R 123:localhost:456 remotehost
    连接主机remotehost,监听主机remotehost的端口123,通过本地主机,把到主机remotehost的端口123的连接转发到本地主机localhost的端口456。
  2. ssh -R 123:nearhost:456 remotehost
    连接主机remotehost,监听主机remotehost的端口123,通过本地主机,把到主机remotehost的端口123的连接转发到主机nearhost的端口456。

对比-L和-R

ssh -L sourcePort:forwardToHost:onPort connectToHost
ssh -R sourcePort:forwardToHost:onPort connectToHost
两者都是把到端口sourcePort的连接转到主机forwardToHost的端口onPort,区别在于sourcePort端口在哪个主机上,以及通过哪个主机做桥梁。
-L是通过远程主机connectToHost做桥梁,监听本地主机;
-R是用过本地主机做桥梁,监听远程主机connectToHost。

参考文献:
StackExchange How does reverse SSH tunneling work?
通过ssh反向连接内网主机的方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSH正向连接和反向连接 的相关文章

  • 强制卸载 NFS 安装目录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • 跟踪 Linux 程序中活跃使用的内存

    我想跟踪各种程序在特定状态下接触了多少内存 例如 假设我有一个图形程序 最小化时 它可能会使用更少的内存 因为它不会重新绘制窗口 这需要读取图像和字体并执行大量库函数 这些对象仍然可以在内存中访问 但实际上并没有被使用 类似的工具top它们
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • nginx 上的多个网站和可用网站

    通过 nginx 的基本安装 您的sites available文件夹只有一个文件 default 怎么样sites available文件夹的工作原理以及如何使用它来托管多个 单独的 网站 只是为了添加另一种方法 您可以为您托管的每个虚拟
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • Android 时钟滴答数 [赫兹]

    关于 proc pid stat 中应用程序的总 CPU 使用率 https stackoverflow com questions 16726779 total cpu usage of an application from proc
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • Pyaudio 安装错误 - “命令‘gcc’失败,退出状态 1”

    我正在运行 Ubuntu 11 04 Python 2 7 1 并想安装 Pyaudio 于是我跑了 sudo easy install pyaudio 在终端中 进程退出并显示以下错误消息 Searching for pyaudio Re
  • PHP 从命令行启动 gui 程序,但 apache 不启动

    首先 我阅读了有类似问题的人的一些帖子 但所有答案都没有超出导出 DISPLAY 0 0 和 xauth cookies 这是我的问题 提前感谢您的宝贵时间 我开发了一个小库 它使用 OpenGL 和 GLSL 渲染货架 过去几天我将它包装
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • SSE:跨页边界的未对齐加载和存储

    我在页面边界旁边执行未对齐加载或存储之前读过某处 例如使用 mm loadu si128 mm storeu si128内在函数 代码应首先检查整个向量 在本例中为 16 个字节 是否属于同一页 如果不属于同一页 则切换到非向量指令 我知道
  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获

随机推荐

  • mysql免安装版的下载与安装

    下载 打开 https www mysql com downloads 1 点击该项 2 进去后点击 3 到了真正的下载页面 选择平台 选择版本 安装版和免安装版 下载 4 我现在下载免安装版的 Windows x86 64 bit ZIP
  • Python基础-将变量的值作为变量名

    使用场景 linux unix磁盘文件系统实时使用情况动态收集 每一台机器挂载的文件系统名字有可能都不相同 就算同一台机器不同时间段挂载的文件系统也会不同 我们需要动态收集文件系统名 将变量的值作为变量 定义为文件系统的名 语法基础 gt
  • java如何将字符串存入到数组中

    方法一 public static void main String args 定义一个字符串 String str browser 定义一个字符数组 char array new char 100 for int i 0 i lt str
  • liberity 添加信赖的https证书到key.jks

    业务场景 定时任务批量推送数据到第三方接口 请求地址为https 域名 测试环境测试之后 出现证书认证问题 不能正常推送数据 定时任务部署在 websphere liberty中 出现问题之后在java的Java jdk 1 8 jre l
  • webpack 压缩图片

    问题描述 vue正常打包之后一些图片文件很大 使打包体积很大 通过image webpack loader插件可将大的图片进行压缩从而缩小打包体积 参考 点这里 解决方法 一定要用cnpm安装 cnpm i image webpack lo
  • 数据结构Java实现05----栈:顺序栈和链式堆栈

    本文转载至 http www cnblogs com smyhvae p 4789699 html 一 堆栈的基本概念 堆栈 也简称作栈 是一种特殊的线性表 堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同 其差别是线性表允许在任意位
  • 数据库的优化方案

    1 优化索引 SQL语句 分析慢查询 2 设计表的时候严格根据数据库的设计凡事来设计数据库 3 使用缓存 把经常访问到的数据且不经常变化的数据放在缓存中 节约磁盘IO 4 优化硬盘 采用SSD 使用磁盘队列技术 5 采用MySQL内部自带的
  • 软件体系结构-KWIC索引系统

    引言 KWIC作为一个早年间在ACM的Paper提出的一个问题 被全世界各个大学的软件设计课程奉为课堂讲义或者作业的经典 From Wiki FYI D L Parnas uses a KWIC Index as an example on
  • Scala递归删除某个文件夹

    check the result is already exists or not val outFilePath D doc spark out t2 val outFile new File outFilePath recursion
  • arm 使用wpa_cli连接wifi

    公司使用的是IMX6的ARM板 板子已经带了8192cu的驱动 使用 lsmod 命令可以查看已经安装的mod 使用的USB为 树莓派 Raspberry Pi 无线USB网卡 EDUP EP N8508GS 黄金版 免驱 lsmod 结果
  • Lorenz系统、简单的Rossler系统和Chua电路系统的混沌吸引子——MATLAB实现

    1 Lorenz系统 美国著名气象学家E N Lorenz在1963年提出来的用来刻画热对流不稳定性的模型 即Lorenz混沌模型 可以简单描述如下 x
  • OpenFire源码学习之十六:wildfire

    Wildfire Wildfire是一个基于xmpp的IM即时通讯和群组聊天工具 安装 Windows Windows的默认安装目录 c ProgramFiles Wildfire Linux Unix 有两种选择方法 1 选择RPM 它将
  • C++ 类模板之类外实现重载运算符和友元函数

    在同一个CPP中 使用友元函数 同时在类外实现 这里 h cpp未分离 如果分离写法不一样 一般在使用类模板时 将声明和实现放在同一文件中 可命名为 hpp后缀 即 h cpp在同一文件中 1 重载操作符 定义一个类 通过重载 lt lt
  • Windows下vs2013编译ffmpeg源码

    在搜罗网上各种资源以及网上请教各位大声终于在今天晚上编译成功 经测试编译出来的库可正常使用 故可证明编译正确 在此特感谢群里大神的帮助 感谢雷神 现将具体步骤记录如下 本人编译用的是vs2013 在win7系统下 对ffmpeg 3 0进行
  • 在ubuntu 下运行html 文件

    直接用vim 写好html 之后 直接用firefox test html 即可 而不是通常ide 中的点击图标 html 的基本模板 1 2
  • wangEditor4 + vue3.0 创建一个基础的 富文本编辑器

    文章时间 2021 8 13 如果超过太久了 可能文章就会失效了 所以请注意 项目场景 使用 wangEditor 来弄一个 富文本编辑器 实现文章的 添加 和 编辑 问题描述 在网上搜了 使用那个富文本编辑器好 于是就找到了这个 wang
  • Python 的 .py 与 Cython 的 .pxd .pyx .pyd 文件格式之间的主要区别

    http forum digitser cn thread 2227 1 1 html
  • Selenium的介绍与使用

    selenium 是一个用于对web网页进行自动化测试的工具 可以通过它提供的一些方法自动操作浏览器 可以完全模拟人的操作 selenium在Python爬虫中的应用 1 gt 获取动态网页中的数据 一些动态的数据我们在获取的源码中并没有显
  • shell 脚本 修改系统时间

    bin bash if n 1 then echo usage date sh HHMMSS for example date 01 01 01 else echo 1 date s 1 hwclock w hwclock r fi
  • SSH正向连接和反向连接

    ssh命令是openssh套件中的客户端连接工具 可以给予ssh加密协议实现安全的远程登录服务器 反向连接是什么 平时大多数使用ssh命令是控制端主机主动连接受控端主机 通过这个连接控制端主机可以主动的向受控端主机发送一些请求 这称为正向连