Hysteria2 JSON转Mihomo YAML怎么配置?2026 server、auth、SNI、obfs-password参数对照与Timeout排查

Hysteria2 JSON配置怎么转Mihomo YAML?2026 client config.yaml参数对照教程

Hysteria2 JSON转Mihomo YAML怎么做?很多用户拿到Hysteria2节点、面板导出的JSON配置或第三方客户端配置后,希望转换成Mihomo、Clash Verge Rev可以直接使用的YAML配置,却经常遇到节点不显示、认证失败或Timeout问题。

常见情况包括:

  • 手里只有Hysteria2 JSON配置
  • Hysteria2 client configuration是JSON
  • Mihomo要求YAML配置
  • JSON导入Clash提示格式错误
  • JSON里有auth,Mihomo里却要求password
  • JSON里的tls.sni不知道对应YAML哪个字段
  • JSON里的insecure不知道怎么转换
  • JSON里的obfs结构无法直接复制
  • salamander密码转换后丢失
  • Hysteria2 JSON转YAML以后节点Timeout
  • 转换后节点能显示但无法连接
  • client config.yaml怎么写
  • Hysteria2配置里的server和port怎么拆开
  • JSON里的bandwidth要不要写进Mihomo
  • Hysteria2 URI、JSON和YAML到底有什么区别

这类问题的核心不是:

“把大括号改成缩进”

而是:

把Hysteria2配置里的每个参数,正确映射到Mihomo能够识别的节点字段。

本文会按照:

JSON结构 → 参数含义 → Mihomo YAML字段 → 常见转换错误

一步一步讲清楚。

Hysteria2 JSON配置转成Mihomo YAML后节点不显示、认证失败或一直Timeout,想获取可直接导入常见客户端的稳定节点订阅?

获取稳定订阅线路

如果 Hysteria2 JSON 配置已经成功转换成 Mihomo YAML,但导入后出现节点不显示、认证失败、缺少 obfs 参数或一直 Timeout,不要只检查 YAML 语法。下面这张图展示的是客户端正常加载节点后的状态:节点列表完整、不同地区线路能够正常显示延迟。排查时可以重点确认自己的配置是否已经完成“参数转换 → YAML加载 → 节点显示 → 延迟测试 → 实际连接”这几个步骤。

Hysteria2 JSON配置转Mihomo YAML排查示例,客户端正常加载多地区节点并显示延迟

一、Hysteria2 JSON配置怎么转Mihomo YAML?

最核心的步骤是:

先读取JSON里的节点参数

然后:

映射成Mihomo的Hysteria2节点格式。

例如JSON里可能包含:

server

port

auth

tls

sni

insecure

obfs

obfs-password

而Mihomo YAML里可能对应:

server

port

password

sni

skip-cert-verify

obfs

obfs-password

注意:

字段名字并不一定完全一样。

所以不能机械复制。


二、JSON和YAML只是格式不同吗?

不完全是。

JSON和YAML确实都是:

结构化数据格式。

但是当它们来自:

不同客户端

不同面板

不同订阅系统

时,

字段名称和层级也可能不同。

所以真正难点是:

字段语义转换。


三、Hysteria2官方客户端一定使用JSON吗?

不一定。

很多Hysteria2原生配置本身更常见的是:

YAML结构。

但一些:

面板

API

订阅接口

第三方客户端

可能输出:

JSON。

所以看到:

Hysteria2 JSON

不代表它一定是官方原生配置格式。


四、Mihomo为什么不能直接导入任意Hysteria2 JSON?

因为Mihomo读取的是:

自己的配置结构。

即使JSON里面包含:

正确的服务器

端口

密码

Mihomo也不一定知道:

这些字段应该怎么解释。


五、JSON和Mihomo YAML最常见的区别是什么?

例如JSON可能写:

“auth”: “abcdef”

而Mihomo节点常见写法:

password: abcdef

虽然两者:

值可能相同

但字段名称:

不同。


六、先看一个简化JSON示例

假设你拿到:

{
“server”: “example.com”,
“port”: 443,
“auth”: “mypassword”,
“sni”: “example.com”,
“insecure”: false
}

这里包含:

服务器

端口

认证密码

SNI

证书校验。


七、转换成Mihomo YAML大概是什么样?

概念上可以写成:

  • name: HY2-01
    type: hysteria2
    server: example.com
    port: 443
    password: mypassword
    sni: example.com
    skip-cert-verify: false

这里最明显的转换是:

auth

→

password

insecure

→

skip-cert-verify


八、为什么auth会变成password?

因为不同客户端对:

Hysteria2认证信息

使用的字段名称不同。

原生配置里可能叫:

auth

而Mihomo代理节点配置:

通常使用password表示认证信息。


九、auth和obfs-password是一回事吗?

不是。

这是非常重要的区别。

auth/password:

用于Hysteria2客户端认证。

obfs-password:

用于salamander混淆。

不能混用。


十、JSON里的server怎么转换?

如果JSON是:

“server”: “example.com”

直接对应:

server: example.com


十一、如果JSON里的server包含端口呢?

有些配置可能写:

“server”: “example.com:443”

这时不能简单地把整个字符串都填到:

server:

然后又额外写:

port: 443

要根据目标Mihomo格式:

把主机名和端口正确拆开。


十二、例如server:port怎么拆?

原始:

example.com:443

通常应该拆成:

server: example.com

port: 443


十三、IPv6地址怎么办?

IPv6包含:

多个冒号。

例如:

不要简单按第一个冒号:

切割。

否则会把IPv6地址拆坏。


十四、JSON里的port怎么转换?

如果本身有:

“port”: 443

直接映射:

port: 443

通常使用:

数字。


十五、port要不要加引号?

一般:

不需要。

例如:

port: 443

即可。


十六、JSON里的auth怎么处理?

例如:

“auth”: “abc123”

通常映射为:

password: abc123


十七、密码里有特殊字符怎么办?

YAML对某些字符:

有特殊含义。

如果密码包含:

:

{

}

[

]

&

?

等字符,

建议:

用引号包起来。

例如:

password: “abc#123”


十八、为什么#特别容易出问题?

因为YAML中:

常用于:

注释。

如果不加引号,

后面的内容可能被:

当成注释。


十九、JSON里的tls.sni怎么转?

例如:

“tls”: {
“sni”: “example.com”
}

对应Mihomo常见:

sni: example.com


二十、sni是什么?

SNI用于:

TLS握手时告诉服务器:

客户端希望访问哪个域名。

有些Hysteria2节点:

server

和:

sni

并不相同。


二十一、server和sni必须一样吗?

不一定。

例如:

server: 1.2.3.4

sni: example.com

也是可能的。

所以转换时:

不要擅自把SNI改成server。


二十二、JSON里的insecure是什么意思?

例如:

“insecure”: true

通常表示:

跳过TLS证书验证。


二十三、insecure怎么映射到Mihomo?

一般对应:

skip-cert-verify

逻辑上:

insecure: true

→

skip-cert-verify: true


二十四、insecure: false呢?

对应:

skip-cert-verify: false


二十五、可以为了省事永远写true吗?

不建议。

如果服务器证书正常:

应该优先保持正常验证。

只有原始配置明确:

允许跳过验证

时,

才应保持:

true。


二十六、为什么乱改skip-cert-verify会有风险?

因为它控制:

TLS证书验证。

长期关闭证书验证:

会降低连接验证能力。


二十七、JSON里的obfs怎么转换?

Hysteria2常见混淆:

salamander。

JSON可能出现:

“obfs”: {
“type”: “salamander”,
“password”: “xxxxxx”
}


二十八、转换到Mihomo时怎么写?

常见对应:

obfs: salamander
obfs-password: xxxxxx


二十九、为什么不能直接复制JSON的obfs对象?

因为Mihomo节点配置通常:

不是同样的嵌套结构。

JSON里可能是:

obfs.type

obfs.password

而Mihomo可能要求:

obfs

obfs-password

两个平级字段。


三十、只有obfs没有密码怎么办?

如果服务器确实启用了:

salamander

通常还需要:

obfs-password。

否则可能出现:

missing obfs password

obfs-password required

Timeout。


三十一、上一篇讲过的obfs-password问题在这里为什么很关键?

因为:

JSON → YAML

正是最容易丢:

Hysteria2协议专用参数

的步骤之一。


三十二、JSON里的obfs.password可以直接当认证password吗?

不能。

例如:

auth: login123

obfs.password: salamander456

那么转换以后应该分别是:

password: login123

obfs-password: salamander456


三十三、如果两个密码刚好相同呢?

即使值相同,

仍然应该分别:

映射到正确字段。


三十四、JSON里的bandwidth是什么?

部分Hysteria2配置可能包含:

上传带宽

下载带宽

例如:

“bandwidth”: {
“up”: “20 mbps”,
“down”: “100 mbps”
}


三十五、bandwidth一定要写进Mihomo吗?

不一定。

具体取决于:

Mihomo版本

配置方式

以及该字段是否需要。

不要看到原始JSON里有:

所有字段

就机械复制。


三十六、为什么有些字段可以忽略?

因为原生Hysteria2客户端配置可能还包含:

本地监听

SOCKS5端口

HTTP端口

日志

ACL

这些属于:

客户端本地运行参数。

它们不是:

远程节点参数。


三十七、哪些字段通常属于节点本身?

重点包括:

server

port

auth/password

sni

insecure/skip-cert-verify

obfs

obfs-password

以及部分协议专用参数。


三十八、哪些字段通常不是节点本身?

例如:

socks5.listen

http.listen

log.level

本地监听地址

这些更多是:

客户端运行配置。


三十九、为什么不能把完整client JSON全部塞进一个Mihomo节点?

因为:

原生客户端配置

和:

Mihomo单节点定义

不是同一个层级。


四十、Hysteria2 client config.yaml是什么?

通常指:

Hysteria2客户端配置文件。

它可能包含:

远端服务器参数

TLS参数

认证

本地代理监听

流量控制

所以比一个:

Mihomo代理节点

包含的内容更多。


四十一、Mihomo YAML和Hysteria2原生client.yaml一样吗?

不一样。

虽然都是:

YAML

但Schema:

完全不同。


四十二、什么叫Schema不同?

就是:

字段名字

字段层级

允许的参数

都可能不同。


四十三、所以YAML转YAML也可能不能直接复制?

对。

即使:

两边都叫YAML

也不代表:

结构兼容。


四十四、Hysteria2原生YAML里的auth怎么转?

如果原生配置:

auth: xxxxxx

Mihomo节点通常:

password: xxxxxx


四十五、原生YAML里的tls.sni怎么转?

通常:

tls:
sni: example.com

→

sni: example.com


四十六、原生YAML里的tls.insecure怎么转?

通常:

tls:
insecure: true

→

skip-cert-verify: true


四十七、原生YAML里的obfs怎么转?

例如:

obfs:
type: salamander
salamander:
password: abc123

可能需要展开成:

obfs: salamander
obfs-password: abc123


四十八、为什么这个转换特别容易写错?

因为原生配置:

是多层嵌套。

Mihomo:

可能是平级字段。


四十九、如果直接把嵌套obfs复制过去会怎样?

可能出现:

Unknown Field

Invalid Config

或者:

Mihomo忽略该参数。


五十、Hysteria2 JSON转YAML最重要的是哪些参数?

优先保证:

server

port

password

sni

skip-cert-verify

obfs

obfs-password

正确。


五十一、为什么先保证这些参数?

因为它们直接影响:

连接

认证

TLS

混淆。


五十二、转换后节点能显示就代表参数都对吗?

不代表。

Mihomo能够解析:

节点结构

只能说明:

YAML格式基本正确。

但认证参数:

仍可能错误。


五十三、节点显示但Timeout通常检查什么?

优先:

server

port

password

sni

obfs-password

TLS配置。


五十四、节点完全不显示呢?

优先检查:

type

YAML缩进

Mihomo核心版本

配置是否成功加载。


五十五、type应该写什么?

Mihomo中Hysteria2节点常见:

type: hysteria2


五十六、写成hy2可以吗?

不要默认。

除非:

你当前客户端明确支持这种写法。

最稳妥:

按照Mihomo支持的字段。


五十七、为什么网上有不同字段写法?

原因包括:

不同核心

不同版本

不同转换器

不同客户端

甚至:

旧教程。


五十八、转换时应该优先参考什么?

优先级:

当前Mihomo版本支持的格式

→ 客户端文档

→ 原始节点参数

→ 第三方教程。


五十九、不要只看旧教程吗?

对。

Hysteria2和Mihomo都:

持续更新。

旧配置示例:

可能已经不完全适用。


六十、JSON里的ALPN怎么办?

部分Hysteria2配置可能包含:

ALPN。

如果目标Mihomo版本支持相应字段:

需要按照其支持格式映射。

不要:

自己猜字段名称。


六十一、ALPN一般和什么有关?

主要和:

TLS协议协商

有关。

它和:

obfs-password

不是一类参数。


六十二、JSON里的fingerprint怎么办?

如果配置包含:

TLS指纹

需要确认:

当前Mihomo Hysteria2节点是否支持对应字段。

不要直接套用:

其他协议的fingerprint配置。


六十三、为什么VLESS Reality字段不能套到Hysteria2?

因为:

协议不同。

例如:

public-key

short-id

属于:

Reality相关参数。

不是普通Hysteria2配置字段。


六十四、JSON里出现server_name怎么办?

有些第三方JSON不用:

sni

而使用:

server_name

它在语义上可能对应:

TLS Server Name。

转换时应该确认:

它是否等同于SNI。


六十五、JSON里出现skip_cert_verify怎么办?

如果已经是:

skip_cert_verify

语义通常接近:

skip-cert-verify。

但字段风格:

下划线

和:

连字符

不同。


六十六、为什么JSON常用下划线,YAML示例常用连字符?

这是:

不同程序字段命名习惯。

不能认为:

改格式时字段名会自动转换。


六十七、大小写会影响配置吗?

有可能。

配置字段应该严格按照:

目标程序要求。


六十八、JSON里的true/false转YAML时怎么写?

直接:

true

false

不要写:

“true”

除非目标Schema明确允许字符串。


六十九、为什么字符串”true”可能有问题?

因为:

布尔值

和:

文本字符串

是两种不同类型。


七十、端口也一样吗?

是。

port:

通常应该是:

数字

而不是不必要的字符串。


七十一、YAML缩进要几格?

常见使用:

2个空格。

重点不是:

一定几格

而是:

同一层级保持一致。


七十二、可以用Tab吗?

不建议。

YAML尽量使用:

空格。


七十三、一个节点示例怎么写?

例如:

proxies:

  • name: HY2-01
    type: hysteria2
    server: example.com
    port: 443
    password: “your-auth-password”
    sni: example.com
    skip-cert-verify: false
    obfs: salamander
    obfs-password: “your-obfs-password”

这是:

结构示例。

实际值必须来自:

自己的节点配置。


七十四、为什么不能直接复制示例里的密码?

因为这些只是:

占位符。

真正连接需要:

服务器真实参数。


七十五、只有一个节点时也需要proxies吗?

如果你是在:

完整Mihomo配置

里写节点:

通常会放在:

proxies:

下面。


七十六、如果客户端只让你添加单节点呢?

有些客户端:

提供图形界面

不需要手写:

完整proxies结构。


七十七、为什么有些Mihomo配置没有proxies?

可能使用:

proxy-providers。

节点由:

Provider远程获取。


七十八、JSON节点可以直接转成Proxy Provider吗?

可以构建Provider配置,

但这已经属于:

另一层配置。

普通用户:

没必要为了一个节点故意做Provider。


七十九、什么时候适合Proxy Provider?

当你有:

大量远程节点

并希望:

独立更新节点列表

时。


八十、JSON转YAML后怎么验证格式?

至少检查:

YAML能否被客户端正常加载。

如果出现:

Invalid Config

说明先处理:

格式和字段。


八十一、如果没有Invalid Config但节点Timeout呢?

说明:

语法可能已经通过。

接下来检查:

连接参数。


八十二、最常见的转换错误之一:auth没转成password

表现:

节点显示

但认证失败

或:

Timeout。


八十三、第二个常见错误:insecure逻辑写反

例如:

原始:

insecure: true

却写成:

skip-cert-verify: false

这就:

语义反了。


八十四、第三个常见错误:漏掉SNI

如果服务器证书依赖:

特定域名

漏掉SNI:

可能TLS握手失败。


八十五、第四个常见错误:obfs-password丢失

特别是在:

第三方转换

中非常常见。


八十六、第五个常见错误:server带端口又重复写port

例如:

server: example.com:443
port: 443

这种结构:

可能不符合目标格式。


八十七、第六个常见错误:复制原生client配置的本地监听字段

例如:

socks5.listen

并不是:

Mihomo远程节点参数。


八十八、第七个常见错误:JSON转YAML只换语法不换字段

例如:

auth: abc

直接保留:

auth: abc

但Mihomo需要:

password。

这就是典型的:

格式转换成功

Schema转换失败。


八十九、JSON转YAML和订阅转换有什么区别?

JSON转YAML:

可能只处理:

一个配置或节点。

订阅转换:

通常处理:

一批节点

并生成完整配置。


九十、订阅转换会自动完成这些字段映射吗?

好的转换工具:

可能会。

但不能保证:

所有Hysteria2字段都完整支持。


九十一、为什么Hysteria2比VMess更容易转换失败?

因为:

协议专用字段更多。

例如:

obfs

obfs-password

TLS相关参数

带宽

端口跳跃等。


九十二、如果JSON来自服务商后台,最好的方法是什么?

先看看后台有没有:

Mihomo

Clash Meta

Clash

专用订阅。

如果有:

优先直接使用。


九十三、什么时候才建议自己转JSON?

当:

服务商没有目标客户端格式

并且:

你能确认所有参数含义。


九十四、第三方在线JSON转YAML工具能直接用吗?

普通格式转换:

只能把:

JSON语法

变成:

YAML语法。

它不会自动知道:

auth应该改成password。


九十五、这就是为什么“在线JSON转YAML”经常导入失败吗?

是。

它可能生成:

语法正确的YAML

但:

Mihomo完全不认识字段结构。


九十六、正确的转换是什么?

不是:

JSON → YAML文本。

而是:

Hysteria2 JSON Schema

→

Mihomo Hysteria2 Schema。


九十七、转换完成后第一步测试什么?

先:

加载配置。

确认没有:

YAML错误。


九十八、第二步测试什么?

确认:

节点出现在列表。


九十九、第三步测试什么?

单独测试:

一个节点的延迟。


一百、不要一开始批量测速吗?

对。

先验证:

单节点。

避免把:

批量测试失败

误认为配置整体错误。


一百零一、如果延迟显示-1怎么办?

可能是:

核心

DNS

连接参数

节点本身。

需要进一步排查。


一百零二、如果直接Timeout怎么办?

检查:

server

port

password

sni

obfs-password

网络。


一百零三、如果authentication failed呢?

优先检查:

auth → password

映射。


一百零四、如果出现missing obfs password呢?

检查:

JSON里的obfs.password

是否成功转换成:

obfs-password。


一百零五、如果出现certificate verify failed呢?

检查:

SNI

证书

skip-cert-verify

是否正确映射。


一百零六、如果出现Unknown Field呢?

说明:

字段名字

或者:

核心版本

可能有问题。


一百零七、如果出现Unsupported Proxy Type呢?

优先检查:

当前Mihomo核心是否支持Hysteria2。


一百零八、为什么需要更新Mihomo核心?

旧核心可能:

不支持新字段

或者:

Hysteria2支持不完整。


一百零九、更新核心后还是失败怎么办?

不要继续反复更新。

回到:

原始JSON

和:

转换YAML

逐项对比。


一百一十、最应该逐项对比哪些字段?

建议表格化检查:

JSON server → YAML server

JSON port → YAML port

JSON auth → YAML password

JSON tls.sni → YAML sni

JSON insecure → YAML skip-cert-verify

JSON obfs.type → YAML obfs

JSON obfs.password → YAML obfs-password


一百一十一、参数对照表

Hysteria2 JSON/原生配置Mihomo常见字段说明
serverserver服务器地址
portport服务器端口
authpasswordHysteria2认证信息
tls.snisniTLS服务器名称
tls.insecure / insecureskip-cert-verify是否跳过证书校验
obfs.typeobfs常见为salamander
obfs.passwordobfs-password混淆密码
namename节点名称,可自行设置

实际字段仍应以:

当前Mihomo版本支持格式

为准。


一百一十二、不要映射哪些客户端本地字段?

例如:

socks5.listen

http.listen

local port

日志目录

这些不属于:

远程节点本身。


一百一十三、转换后可以删除原始JSON吗?

建议:

先不要。

原始JSON是:

最重要的参数参考。


一百一十四、为什么要保留原始配置?

以后出现:

节点Timeout

SNI错误

obfs缺失

可以随时:

回头对比。


一百一十五、JSON配置里有敏感信息吗?

有可能。

包括:

认证密码

服务器地址

obfs密码

订阅token。


一百一十六、可以把完整JSON发到论坛求助吗?

不建议。

先:

脱敏。


一百一十七、应该遮掉哪些内容?

至少遮:

server

auth/password

obfs-password

token

个人订阅URL。


一百一十八、配置示例能不能使用假参数?

可以。

公开教程应该:

使用example.com

your-password

之类占位内容。


一百一十九、Hysteria2 JSON转Mihomo YAML标准流程

建议按照:

  1. 保存原始JSON
  2. 找出server
  3. 找出port
  4. 找出auth
  5. 找出TLS/SNI
  6. 找出insecure
  7. 检查obfs
  8. 检查obfs-password
  9. 转成Mihomo字段
  10. 检查YAML缩进
  11. 更新Mihomo核心
  12. 加载配置
  13. 检查节点是否出现
  14. 单独测试延迟
  15. 查看错误日志

一百二十、不要做什么?

不要:

只用在线JSON转YAML工具机械转换

不要:

把auth和obfs-password搞混

不要:

自己编一个obfs密码

不要:

漏掉SNI

不要:

为了连接成功直接长期关闭所有证书验证

不要:

在不知道含义的情况下复制所有JSON字段


一百二十一、如果服务商已经提供Mihomo订阅怎么办?

直接使用:

原生Mihomo订阅。

通常没必要:

自己转JSON。


一百二十二、如果只有Hysteria2分享链接呢?

也可以从:

完整HY2 URI

提取节点参数。

很多情况下:

比第三方JSON更容易判断:

核心连接参数。


一百二十三、JSON、URI、YAML哪个最好?

没有绝对最好。

关键是:

目标客户端能否完整理解。

对于Mihomo:

最省事的是:

兼容Mihomo的原生YAML订阅。


一百二十四、为什么减少转换次数很重要?

例如:

Hysteria2 JSON

→ 第三方格式

→ Base64

→ Clash YAML

每多一层:

都可能丢参数。


一百二十五、最容易丢的字段是什么?

Hysteria2场景里重点关注:

obfs-password

SNI

TLS验证

协议专用参数。


一百二十六、怎么判断已经转换成功?

满足:

配置正常加载

节点正常出现

延迟可以测试

实际网页可以访问

日志没有认证/TLS/obfs错误

才算:

真正转换成功。


总结

Hysteria2 JSON配置怎么转Mihomo YAML?

真正要做的不是简单把:

JSON大括号

转换成:

YAML缩进。

而是把原始Hysteria2配置中的参数:

正确映射到Mihomo支持的节点字段。

最关键的几个对应关系通常是:

server → server

port → port

auth → password

tls.sni → sni

insecure → skip-cert-verify

obfs.type → obfs

obfs.password → obfs-password

如果转换以后出现:

节点不显示

优先检查:

YAML格式和Mihomo核心。

如果节点能显示但:

Timeout

优先检查:

server、port、password、SNI和obfs-password。

如果提示:

missing obfs password

说明需要重新检查:

obfs参数是否在转换过程中丢失。

如果提示:

authentication failed

重点检查:

auth是否正确转换成password。

如果提示:

certificate verify failed

重点检查:

SNI和TLS验证设置。

对于普通用户来说,如果服务商已经提供:

Mihomo

Clash Meta

Clash

原生订阅,

应该优先使用原生格式。

只有在没有目标客户端订阅的情况下,才需要自己进行:

Hysteria2 JSON → Mihomo YAML

参数转换。

这样可以最大限度减少:

字段丢失

认证失败

obfs-password缺失

TLS错误

以及节点Timeout问题。

继续阅读:

👉 Hysteria2配置文件怎么写?Mihomo YAML节点配置教程

👉 Hysteria2缺少obfs密码怎么办?2026 Mihomo与Clash报错排查

👉 Hysteria2节点Timeout怎么办?2026连接失败完整排查