端口转发提供:

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. Python3学习笔记37-LeetCode刷题

    LeetCode中国官网一个用来刷编程题的网站,收录了很多面试题.感觉还是学习到很多.记录一下思路.代码还是要多敲. 建议编写完后直接在LeetCode上运行和提交.提交时会有不同的测试用例来测试代码 ...

  2. withdraw搭建

    <!-- yuan -->首先得安装rabbitmq(由于运行过程中报错)1.安装rabbitmq服务软件包 : apt install rabbitmq-server2.安装完成后在ra ...

  3. Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告

    一.摘要 本篇博文将介绍如何借助BeautifulReport和HTML模版,生成HTML测试报告的BeautifulReport 源码Clone地址为 https://github.com/Test ...

  4. vue.js 父子组件间 props 数据同步处理

    常见的场景: 在一个vue组件A中,使用另外一个组件B.A将自己的数据通过B组件的Props属性(propX)传递到B组件实例内部,B组件内部会修改该Props属性(propX)的值,此时在A组件内部 ...

  5. [转]web.xml中servlet ,filter ,listener ,interceptor的作用与区别

    原文链接:https://blog.csdn.net/netdevgirl/article/details/51483273 一.概念: 1.servlet:servlet是一种运行服务器端的java ...

  6. oracle impdp 覆盖导入 table_exists_action关键字使用

    oracle10g之后impdp的table_exists_action参数table_exists_action选项:{skip 是如果已存在表,则跳过并处理下一个对象:append是为表增加数据: ...

  7. 09 saltstack生产实例--Haproxy+keepalived

    1.如何理解haproxy+keepalived https://www.cnblogs.com/zs-wei/p/9213961.html HaProxy可以通过监听一个统一的端口对外提供能力,然后 ...

  8. [Python自学] day-17 (jQuery)

    一.jQuery简介 参考文档链接:http://jquery.cuishifeng.cn/ jQuery是JS的一个类库,是对DOM.BOM等的封装,方便我们来查找和操作元素. jQuery分为1. ...

  9. jquery里把数组转换成json的方法

    首先来看,jquery里自带的,和json相关的函数: 1.$.parseJSON  :  用来解析JSON字符串,返回一个对象. 什么叫“JSON字符串”? 比如: var a={name:&quo ...

  10. B/S大文件分片上传

    需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...