当前位置: 首页 > 知识库问答 >
问题:

cloudflare - Cloudflare Tunnel 映射 SSH 服务时遇到 'websocket: bad handshake' 错误如何解决?

鲜于渊
2024-10-08

大佬们,我的cloudflared的隧道访问映射ssh服务, 使用就会出现错误: ERR failed to connect to origin error="websocket: bad handshake" originURL=https://* 该怎么解决啊

.

共有1个答案

瞿博易
2024-10-08

遇到 Cloudflare Tunnel 在映射 SSH 服务时出现 "websocket: bad handshake" 错误,通常是因为 SSH 协议(基于 TCP)与 Cloudflare Tunnel 使用的 WebSocket 协议之间不兼容所导致的。Cloudflare Tunnel 主要设计用于支持 HTTP/HTTPS 流量,而不是直接支持 SSH 或其他非 HTTP/HTTPS 协议。

解决方案

  1. 使用 SSH 转发:

    • 通过 HTTP 隧道转发 SSH: 你可以设置一个小的 HTTP 服务(如使用 Nginx、Apache 或简单的 Node.js/Python 服务器),该服务监听在 Cloudflare Tunnel 暴露的端口上,并接受 HTTP 请求。然后,你可以在这个 HTTP 服务中嵌入 SSH 转发逻辑。例如,你可以使用 sshuttleautossh 或自定义的 WebSocket 到 SSH 桥接工具。
    • SSH 代理: 在本地或云服务器上设置一个 SSH 代理(如 ssh -N -f -D localhost:8080 remote_server),然后使用 SOCKS5 代理客户端(如 PuTTY、OpenSSH 的 ProxyCommand)来通过 Cloudflare Tunnel 访问的 HTTP 服务连接到这个 SSH 代理。
  2. 使用 VPN 或直接连接:

    • 如果可能,考虑使用 VPN 或直接网络连接来访问 SSH 服务,而不是通过 Cloudflare Tunnel。
  3. 修改 Cloudflare Tunnel 配置:

    • 确保你的 Cloudflare Tunnel 配置正确,特别是 originURL 应该指向一个能处理 WebSocket 连接的 HTTP/HTTPS 服务。
    • 如果你正在尝试通过非标准端口或协议映射 SSH,这通常不是 Cloudflare Tunnel 的直接支持场景。
  4. 查看日志和调试:

    • 查看 Cloudflare Dashboard 中的 Tunnel 日志,以获取更多关于错误的详细信息。
    • 在你的本地或服务器端,检查 SSH 服务的日志,看是否有任何相关的错误或拒绝连接的日志。
  5. 咨询 Cloudflare 支持:

    • 如果上述步骤都不能解决问题,考虑联系 Cloudflare 支持获取帮助。

示例:使用 SSH 代理和 SOCKS5 客户端

  1. 设置 SSH 代理:

    ssh -N -f -D localhost:8080 your_ssh_server
  2. 配置 PuTTY 使用 SOCKS5 代理:

    • 打开 PuTTY,在左侧的 “Connection” -> “SSH” -> “Tunnels” 中添加一个新的动态端口转发(Dynamic),设置 Source port 为 8080
    • 连接到你的 SSH 代理服务器。
  3. 在 PuTTY 中配置 SOCKS5 代理:

    • 在 “Session” 中配置你的 SSH 目标服务器地址和端口(但实际上是通过 SOCKS5 代理连接的)。
    • 连接后,你可以通过 PuTTY 访问 SSH 目标服务器上的资源,就像直接连接一样。

希望这些信息能帮助你解决问题!

 类似资料:
  • 我正在尝试从地图转换键iterable,但当我这样做时,我得到错误: 统计数字produceTypeData。钥匙不是一种功能 我将遵循这个问题的答案:如何将映射键转换为数组?让它工作。 当我尝试另一种方法(使用)时,我得到一个不同的错误,即: 类型IterableIterator不是数组类型。 在评论中我读到,在本例中,应该将数组括起来。扩展语法中的from()语句,但当我这样做时,我也会得到错

  • [root@SudeepMangubin]#./cassandra-f XSS =-ea-Java agent:/home/苏迪普/Apache-Cassandra-1 . 2 . 5-src/lib/jamm-0 . 2 . 5 . jar-XX:UseThreadPriorities-XX:ThreadPriorityPolicy = 42-xms 930m-xmx 930m-xmn 200m

  • 如何转换rxJava中可观察对象返回的错误?现在我有了这个方法: 这种行为是,通过或传递的任何异常都会传播到此函数返回值的订阅者。是否有可能将例外映射到其他东西?就像

  • 本文向大家介绍启动targetcli时遇到错误解决办法,包括了启动targetcli时遇到错误解决办法的使用技巧和注意事项,需要的朋友参考一下  启动targetcli时遭遇ImportError: cannot import name ALUATargetPortGroup故障 targetcli是一个iSCSI配置管理工具,该工具简单易用,可以直接替换scsi-target-utils。满心欢

  • 我可以通过默认和dns服务名从入口吊舱(以及所有其他)访问服务器: 图表创建的活动入口列表: 现役资源一览表: 提前感谢! Helm和Kubernetes的版本:Helm 3.0.3/Kubernetes 1.15.5(Mac的Docker,MacOS Catalina)

  • 我有两个需要映射的继承层次结构。一个层次结构是国内的,另一个是野生的。我有抽象的Domestic动物和具体的DomesticCat和DomesticDog扩展它。在第二个层次结构中,我有抽象的Wild动物和具体的WildCat和WildDog扩展它。我还有另外两个类,分别是WildAnimalFeeder具有Wild动物的成员对象和DomesticAnimalFeeder具有DomesticAni