www.fastssh.com SSH over WebSockets with CDNs

https://www.fastssh.com/page/create-ssh-cdn-websocket/server/这其实不是标准的websocket报文(服务器响应报文无Sec-Websocket-Accept字段),所以无法使用github.com/gorilla/websocket包:GET / HTTP/1.1
Host: hostname:8080
User-Agent: Go-http-client/1.1
Connection: Upgrade
Origin: http://hostname:8080
Sec-WebSocket-Key: t+M8AiisFSInx6hLi1YBOg==
Sec-WebSocket-Version: 13
Upgrade: websocketHTTP/1.1 101 Switching Protocol
Server: nginx/1.24.0
Date: Sat, 04 May 2024 08:37:56 GMT
Content-Length: 1048576000000
Connection: upgrade

首先申请账户:

使用golang1.20 编写转发程序:

package mainimport ("bufio""fmt""net""io""net/http"_ "strings"
)var upgradeHeaders = []string{"GET / HTTP/1.1","Host: sg-public1.sshws.net:80","User-Agent: Go-http-client/1.1","Connection: Upgrade","Origin: http://sg-public1.sshws.net:80","Sec-WebSocket-Key: t+M8AiisFSInx6hLi1YBOg==","Sec-WebSocket-Version: 13","Upgrade: websocket","","",
}func main() {listener, err := net.Listen("tcp", ":6022")if err != nil {fmt.Println("Error listening on port 6022: ", err)return}defer listener.Close()for {conn, err := listener.Accept()if err != nil {fmt.Println("Error accepting connection: ", err)continue}go handleClient(conn)}
}func handleClient(conn net.Conn) {defer conn.Close()// Connect to the WebSocket serverserverConn, err := net.Dial("tcp", "sg-public1.sshws.net:80")if err != nil {fmt.Println("Error connecting to WebSocket server: ", err)return}defer serverConn.Close()// Send upgrade headersfor _, header := range upgradeHeaders {if _, err := fmt.Fprint(serverConn, header+"\r\n"); err != nil {fmt.Println("Error sending header: ", err)return}}// Read server responsereader := bufio.NewReader(serverConn)response, err := http.ReadResponse(reader, nil)if err != nil {fmt.Println("Error reading server response: ", err)return}defer response.Body.Close()if response.StatusCode != http.StatusSwitchingProtocols {fmt.Println("Server did not accept WebSocket upgrade: ", response.Status)return}// Forward data between TCP client and WebSocket serverbuffer := make([]byte, 1024)go io.CopyBuffer(serverConn, conn, buffer)io.CopyBuffer(conn, serverConn, buffer)
}

编译后运行: 

mkdir -pv /tmp/Ay;
cd /tmp/Ay;  
go build -ldflags="-s -w" -o ws2.elf  ws2.go ;./ws2.elf

验证并使用:

/tmp/busybox netstat -anl|grep 6022;   ssh -o StrictHostKeyChecking=no -o HostKeyAlgorithms=+ssh-dss -o ServerAliveInterval=10 -o ServerAliveCountMax=3 -D 3080 -Nf -v fastssh.com-username@127.0.0.22 -p 6022;/tmp/busybox netstat -anl|grep 3080; curl -v -4 -x socks5h://127.0.0.1:3080 cip.cc;

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

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

相关文章

ubuntu20配置深度学习环境

目录 系统环境安装anaconda文件的安装anaconda环境配置anaconda换中科大源常用的anaconda命令 安装显卡驱动安装CUDA下载cudnn安装pytorch更换conda源选择对应的pytorch版本进行安装 系统环境 ubuntu20,安装了ros noetic。 参考博客主要有: https://g…

javascript 练习 写一个简单 另类录入 电脑组装报价表 可打印

数据格式 &#xff08;1代表cpu、2代表主板、3代表内存、。。。&#xff09; 1i3 12100 630 2H610 480 3DDR4 3200 16G 220 4500G M.2 299 5300W电源 150 6小机箱 85 7GT 730G 4G 350 8WD 2T 399 9飞利浦 24Led 580 主代码 Html JS <!DOCTYPE html> <html lang&qu…

Python学习笔记------pycharts模块

pyecharts模块简介 Echarts是个由百度开源的数据可视化&#xff0c;凭借着良好的交互性&#xff0c;精巧的图表设计&#xff0c;得到众多开发者的认可&#xff0c;而python是门富有表达力的语言&#xff0c;很适合用于数据处理&#xff0c;当数据分析遇上数据可视化时pyechart…

EPAI手绘建模APP演示板、材质编辑器、样式编辑器

(11) 更多 图 74 更多工具栏 ① 演示板&#xff1a;打开关闭演示板。演示板用来显示从设备导入的模型图纸图片或者打开模型建模教程网页&#xff0c;是建模过程中一个辅助功能。有些设备有小窗口功能有些没有&#xff0c;对于没有小窗口功能的设备&#xff0c;通过演示板能够在…

Boosting算法揭秘:从原理到scikit-learn实战

Boosting算法揭秘&#xff1a;从原理到scikit-learn实战 在机器学习的江湖中&#xff0c;Boosting算法以其强大的预测能力和独特的训练方式占据了一席之地。与Bagging算法并行训练的理念不同&#xff0c;Boosting算法更注重模型的串行迭代和错误修正。本文将从Boosting算法的基…

一键自动化博客发布工具,chrome和firfox详细配置

blog-auto-publishing-tools博客自动发布工具现在已经可以同时支持chrome和firefox了。 很多小伙伴可能对于如何进行配置和启动不是很了解&#xff0c;今天带给大家一个详细的保姆教程&#xff0c;只需要跟着我的步骤一步来就可以无障碍启动了。 前提条件 前提条件当然是先下…

ios app 之 中国大陆 ICP备案问题

从2024年3月份起&#xff0c;上传到苹果商店&#xff08;app store connect&#xff09;中的app, 若使用地区中选择了 亚太地区 - 中国大陆&#xff0c; 则需要上传 中国大陆 app 的ICP备案&#xff0c;下面是对本人对备案的实操及理解&#xff1a; 1) ICP备案与 app store co…

设计模式——行为型模式——策略模式

策略模式 定义 策略模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算法的客户。 策略模式属于对象行为模式&#xff0c;它通过对算法进行封装&#xff0c;把使用算法的责任和算法的实现分割开来&a…

uniapp+vue基于移动端的药品进销存系统r275i

最后我们通过需求分析、测试调整&#xff0c;与药品进销存管理系统管理系统的实际需求相结合&#xff0c;设计实现了药品进销存管理系统管理系统。 系统功能需求包含业务需求、功能需求用户需求&#xff0c;系统功能需求分析是在了解用户习惯、开发人员技术和实力等各个因素的前…

【Conda】解决无名虚拟环境问题

文章目录 问题描述&#xff1a;无名虚拟环境解决步骤1 添加虚拟环境目录到envs步骤2 成功命名 问题描述&#xff1a;无名虚拟环境 如果不指定创建目录&#xff0c;默认创建在C盘用户目录下&#xff0c;这应该是很多人不愿意的吧。 指定目录创建虚拟环境命令如下&#xff1a; …

【微服务】——Docker 基础知识

这里写自定义目录标题 1.1 了解Docker1.1.1应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.安装Docker——未实践 2.Dock…

使用Python和Pygame创建一个简单的飞机大战游戏 [附源码]

在这个数字化时代&#xff0c;游戏已经成为我们生活中不可或缺的一部分。从经典的街机游戏到现代的3D游戏&#xff0c;游戏行业经历了巨大的变革。然而&#xff0c;有时候&#xff0c;简单的游戏反而能够带来更多的乐趣和满足感。在本篇文章中&#xff0c;我们将使用Python和Py…

Vue 组件间的数据绑定

在Vue组件中&#xff0c;v-model指令可以用来实现双向数据绑定。它用于将组件的属性和父组件中的数据进行双向绑定&#xff0c;使得当属性的值改变时&#xff0c;父组件中的数据也会相应地改变&#xff0c;并且当父组件中的数据改变时&#xff0c;属性的值也会相应地改变。 目…

多级留言/评论的功能实现——SpringBoot3后端篇

目录 功能描述数据库表设计后端接口设计实体类entity 完整实体类dto 封装请求数据dto 封装分页请求数据vo 请求返回数据 Controller控制层Service层接口实现类 Mapper层Mybatis 操作数据库 补充&#xff1a;返回的数据结构自动创建实体类 最近毕设做完了&#xff0c;开始来梳理…

WPF应用程序XAML

当WPF应用程序创建好后&#xff0c;系统会自动添加一个Grid控件到窗体上&#xff0c;通过Grid控件能够方便地对界面进行布局.下面代码中为Grid控件添加了两行两列&#xff0c;分别用RowDefinitions属性ColumnDefinitions属性表示行的集合和列的集合&#xff0c;集合中有RowDefi…

【区块链】共识算法简介

共识算法简介 区块链三要素&#xff1a; 去中心化共识算法智能合约 共识算法作为区块链三大核心技术之一&#xff0c;其重要性不言而喻。今天就来简单介绍共识算法的基本知识。 最简单的解释&#xff0c;共识算法就是要让所有节点达成共识&#xff0c;保证少数服从多数&#x…

噪声嵌入提升语言模型微调性能

在自然语言处理&#xff08;NLP&#xff09;的快速发展中&#xff0c;大模型&#xff08;LLMs&#xff09;的微调技术一直是研究的热点。最近&#xff0c;一篇名为《NEFTUNE: NOISY EMBEDDINGS IMPROVE INSTRUCTION FINETUNING》的论文提出了一种新颖的方法&#xff0c;通过在训…

【数据结构】--- 深入剖析二叉树(上篇)--- 初识树和二叉树

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 数据结构之旅 &#x1f3e0; 初识树 &#x1f4d2; 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点…

分布式与一致性协议之一致哈希算法(三)

一致哈希算法 如何使用一致哈希算法实现哈希寻址 我们一起来看一个例子&#xff0c;对于1000万个key的3节点KV存储&#xff0c;如果我们使用一致哈希算法增加1个节点&#xff0c;即3节点集群变为4节点集群&#xff0c;则只需要迁移24.3%的数据,如代码所示 package mainimpor…

微搭低代码入门03页面管理

目录 1 创建页面2 页面布局3 页面跳转总结 上一篇我们介绍了应用的基本操作&#xff0c;掌握了应用的概念后接着我们需要掌握页面的常见操作。 1 创建页面 打开应用的编辑器&#xff0c;在顶部导航条点击创建页面图标 在创建页面的时候可以从空白新建&#xff0c;也可以使用模…