端口转发提供:

1.加密 SSH Client 端至 SSH Server 端之间的通讯数据。

2.突破防火墙的限制完成一些之前无法建立的 TCP 连接。

但是只能转发tcp连接,想要转发UDP,需要另外安装软件。

场景一:

现在有A,B两台机器,可以互相ssh访问,但是B上防火墙组织所有其他端口访问,想通过ssh转发,让A的8000端口访问B上8001端口。

A的ip:192.168.66.19

B的ip:192.168.66.78

B内开启防火墙 systemctl start firewalld。

从A访问B的8001端口会返回:

OSError: [Errno ] No route to host

在A上配置本地转发:

ssh -L :localhost: -fN test@192.168.66.78  # ssh -L <local port>:<remote host>:<remote port> <SSH hostname>  这里<remote host>和<SSH hostname>都是B机器,
<SSH hostname>表示接受ssh连接的机器,而<remote host>表示最终被转发的机器,两者可以是两个机器,实现穿透防火墙。

加上不加fN会显示的登陆test@192.168.66.78建立连接,加上之后在后台建立。

修改测试脚本访问本地8000端口:

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', ))
client.send("hello world".encode('utf-8'))

B机器上的server代码如下:

import socket
import sys server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(('192.168.66.78', 8001)) while True:
print("listening on 8001")
server.listen(5)
conn,addr = server.accept()
print("accept ", addr) data = conn.recv(1024)
print(data)
conn.close()

结果显示

channel : open failed: connect failed: Connection refused

后来发现,B上的server代码需要监听的是本地的8001端口,因为配置转发的时候是“8000:localhost:8001”,表示在B机器上会转发到localhost:8001。代码改为:

server.bind(('127.0.0.1', 8001))

再测试显示连接成功。

参考:https://blog.csdn.net/nimasike/article/details/73289777

https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/

https://blog.csdn.net/weixin_41919236/article/details/85015781

远程转发和本地转发原理一样,区别只是在于在哪台主机上进行配置。

有一个缺点是,ssh转发普通用户就可以设定,如果想要取消转发功能,可以修改/etc/ssh/sshd_config,配置“AllowTcpForwarding  no”禁止转发,默认是开启转发。

测试ssh转发的更多相关文章

  1. ssh转发代理:ssh-agent用法详解

    SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 使用ssh-agent之前 使用ssh公钥认证的方式可以免去ssh客户端(如 ...

  2. iperf测试流量转发(nginx反向代理tcp/udp)

    一.准备工作 服务器1:192.168.33.102     搭建nginx服务,作为反向代理的中转站 服务器2:192.168.33.103    nginx要反向代理的服务器 服务器3:192.1 ...

  3. 【奇技淫巧】使用 SSH 转发 Sock5 流量

    标题:使用 SSH 转发 Sock5 流量 日期:2018-06-27 介绍:使用 ssh 来做个 sock5 的代理,穿透到内网中做后渗透 0x01. 基本信息 在 ubuntu(10.211.55 ...

  4. SSH转发机制

    第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我 ...

  5. PuTTY+Xming实现X11的ssh转发

    1 需求分析 有些Linux程序还是不能完全离开窗口环境,或者说离开后操作不方便.其中Oracle就是这样一个程序,其工具程序大多数能够在纯命令行静默执行,如 OCI,DBCA,NetCA等,但是工作 ...

  6. 通过 SSH 转发TCP连接数据

    设定 首先双方的/etc/ssh/sshd_config设定以下四项: AllowAgentForwarding yes AllowTcpForwarding yes GatewayPorts yes ...

  7. ssh转发

    ssh有3种转发:本地转发,远程转发,动态转发. 1.本地转发:当client和ssh-client的方向一致的时候,就是本地转发. 限制:1)client直接访问server被防火墙阻挡.2)ssh ...

  8. SSH 转发学习【转】

    本地端口转发 假定有三台主机A.B.C.由于种种原因(无论是防火墙还是路由原因),AC两台主机之间无法连通.但是B却可以和A.C连通.这时候就可以用本地端口转发来实现A和C通过B来连通. A 192. ...

  9. nginx配置文件+本地测试请求转发到远程服务器+集群

    1 在本地测试1 众所周知,nginx是一个反向代理的服务器,主要功能即为实现负载均衡和动静分离.在别的我别的文章有详细的nginx(Windows)相关介绍教程. 由于自己安装的nginx在本地的计 ...

随机推荐

  1. springMVC的详解

    一,springmvc注解特性 1.@Controller 控制器定义在 spring 3.0 中,通过@controller 标注即可将 class 定义为一个 controller 类.为使 sp ...

  2. 【概率dp】vijos 3747 随机图

    没有养成按状态逐步分析问题的思维 题目描述 在一张图内,两点$i,j$之间有$p$的概率的概率生成一条边.求该图不出现大小$\ge 4$连通块的概率. $n \le 100,答案在实数意义下$ 题目分 ...

  3. 【换根dp】9.22小偷

    换根都不会了 题目大意 给定一棵$n$个点的树和树上一撮关键点,求到所有$m$个关键点距离的最大值$dis_{max}\le LIM$的点的个数. $n,m\le 30000,LIM\le 30000 ...

  4. sqlite3.OperationalError: no such table: account_user

    你可能是在项目中安装了多个app, 首先删除相关app的migration文件中的子文件 执行建表的时候使用: python manage.py makemigrations appname pyth ...

  5. UVAlive 7414 Squeeze the Cylinders a,b,c三种步数 搜索+最短路

    题意:给你n个点(n<=50),然后有些点之间会有一条路,路是单向的,每个回合让你走a,b,c三种步数中的任意一种(a,b,c<=100),问你最少需要多少个回合才能保证一定能从1点到达n ...

  6. 【线性代数】Linear Algebra Big Picture

    Abstract: 通过学习MIT 18.06课程,总结出的线性代数的知识点相互依赖关系,后续博客将会按照相应的依赖关系进行介绍.(2017-08-18 16:28:36) Keywords: Lin ...

  7. js中的时间显示

    var approveTime; approveTime=new Date(da[i].approveTime).toLocaleDateString(); 结果是 xxxx年xx月xx日

  8. 【java设计模式】-00目录

    开篇 [java设计模式]-01设计模式简介 创建型模式: [java设计模式]-02工厂模式(Factory Pattern) [java设计模式]-03抽象工厂模式(Abstract Factor ...

  9. redis慢查询笔记

    慢查询 生命周期 两个配置 三个命令 运维经验 生命周期 1.发送命令 2,排队执行命令因为单线程 3.执行命令 4.返回结果 慢查询发生在第三阶段 客户端超时并不一定有慢查询,但慢查询是客户端超时的 ...

  10. 预处理、const、static与sizeof-为什么不把所有的函数都定义成内联函数

    1:内联是以代码膨胀(复制)为代价的,仅仅省去了函数调用的开销,从而提高函数的执行效率.如果执行函数体内代码的时间相比于函数调用的开销较大,那么效率的收获会很小.另一方面,每一处内联函数的调用都要复制 ...