Bybit API Key 安全教学 — 只读 / IP 白名单 / Sub-account 隔离
你要把 TradingView 信号、或某个交易机器人接到 Bybit 自动下单,第一件事就是建一把 API key——也就是给程序代替你打交易所的通行证。大多数人在这一步权限给太宽,因为 Bybit 的权限勾选界面比 Binance 细,字段又写成 ContractTrade、Wallet 这种对映不明显的名字,随手勾一勾就把 Withdraw(提币)带进去。这篇把 Bybit 官方 V5 API 文档、加上我们自己跨 10 家交易所的权限检查清单对过的部分整理成 Bybit 专用版,只讲会影响你风险大小的三件事。
这篇不比较 Bybit 跟其他家的安全谁做得好——那需要跨交易所实测与内部制度审计,我们没做过,这篇也不会做。范围缩在 API key 一层,因为只要这一层设对,就算下游工具被黑资金也搬不走;设错了,后面所有防护都变装饰。
Withdraw 标成「master 专属」,子账户的 key 在结构上就领不到这个权限;顺手把工具给你的 IP 填进IP 白名单,Bybit 允许多个 IP 用逗号分隔。这一条对 Bybit 特别重要,因为官方 API 文档明文写着「No ip bound api key will be invalid after 90 days」——没绑 IP 的 key 90 天后失效。Bybit API Key 安全的第一件事:搞懂权限模型(两把 key,UTA 是预设)
Bybit V5 API 的认证只用两把 key——ACCESS-KEY 加上 Secret Key,官方 HTTP header 名称是 X-BAPI-API-KEY 与 X-BAPI-SIGN。这一点跟 Bitget、OKX 需要第三把 Passphrase 不一样,也跟 Binance/BingX 一致。
少一把 key 意味着你少一件事要藏。但同时也意味着只要这两把外泄,攻击者就凑齐整个签名材料,没有第三层防线可以挡。
Bybit 从 V5 开始把 Spot、Derivatives、Options 全部整合进「Unified Trading Account」(UTA,统一交易账户),现在新注册的账户预设就是 UTA 模式。这在 API 层级的影响是——你的一把 key 可以同时勾 ContractTrade、Spot、Options、Derivatives 这些分类,一次跑三种产品都可以。
| 权限分类 | 官方字段值 | 自动交易机器人需要吗 |
|---|---|---|
| Read-Only | readOnly=1 | 只想读行情或仓位的话设 readOnly=1;要下单就得 readOnly=0 |
| ContractTrade(合约) | Order、Position | 跑合约策略必勾——包含下单、撤单、改仓位 |
| Spot(现货) | SpotTrade | 跑现货策略勾这个 |
| Options(USDC 期权/永续) | OptionsTrade | 跑期权才勾,不然不用 |
| Derivatives(UTA 统一) | DerivativesTrade | UTA 账户跑衍生品的整合字段 |
| Wallet.AccountTransfer | AccountTransfer | 多数机器人不需要——除非策略会自己搬钱 |
| Wallet.Withdraw | Withdraw(master 专属) | 绝对不要勾——子账户的 key 官方文档写明不可能有这个字段 |
| Exchange | ExchangeHistory | 查 convert 纪录,一般用不到 |
来源:Bybit V5 官方 apikey-info 文档(查证 2026 年 8 月)与跨 10 家交易所检查清单。实际界面文字会随 Bybit 前端改版而变。
Bybit 建 key 的界面会给你两个选择:System-generated 或 Auto-generated。
| System-generated(HMAC) | Auto-generated(RSA) | ||
|---|---|---|---|
| 谁产出 secret | Bybit 帮你产一对 | 你在本机用 api-rsa-generator 产 | |
| Bybit 侧有没有你的私钥 | 有(HMAC 是共用秘密) | 没有——你只上传公钥 | |
| 下游工具支持度 | 几乎所有工具都支持 | 老工具不见得吃 RSA_SHA256 | |
| 适合谁 | 新手、SaaS 用户 | 懂 RSA、自建服务、要求最严的老手 |
RSA 这条的优点是「Bybit never holds your private key」——就算 Bybit 那边数据被撞也不会漏你的 secret。缺点是要多花时间安装,而且下游工具得支持 RSA 签名。如果你用的是 SaaS 型交易机器人,先问对方支不支持 RSA;多数情境下 HMAC 就够用。
三个必做设定:关 Withdraw、绑 IP、用 sub-account
设定一:不要勾 Wallet 底下的 Withdraw
这一条的重要性在于它决定了 key 外泄时的损失规模,其他两条决定的是外泄机率。
就算你把 IP 白名单设得再严、Secret Key 藏得再深,只要 key 漏出去——电脑中毒、SaaS 被黑、自己手滑 push 到公开 repo。Withdraw 有没有勾,决定的是黑客能不能直接把钱搬走。
Bybit 在 key 层级把交易跟提币完全分开,这件事我们的跨交易所检查清单已经逐条对照过,Bybit 属于「可以分开」的 9 家之一。所以这件事的难度不是技术限制,是你有没有记得不勾而已。
Bybit 官方 V5 API 文档把 Wallet 底下的 Withdraw 标成 「Withdraw(master account)」——只有主账号才有这个字段,子账户的 key 建出来根本不会有这一格。
ContractTrade、Spot 加 Withdraw 三个权限、又不小心外泄。攻击者拿到 key 的第一步不是亏你的钱。他会先把你的资产全数 market sell 换成 USDT,接着透过 /v5/asset/withdraw/create 提到他的地址,整个过程可能只需要几分钟。多数人以为的「他顶多乱下单」不是最坏情况。真正发生过的模式就是上面这条路径:先变现、再提币。
IP 白名单能不能挡,取决于他有没有办法从你设置的 IP 打 API。很多外泄情境(例如你 push 了含 IP 的配置文件)是连 IP 信息都一起漏出去的。
设定二:绑 IP 白名单,Bybit 允许多个逗号分隔
Bybit 官方 V5 API 的 create-sub-api 文档对 IP 字段的说明原文是「Set the IP bind. example: 192.168.0.1,192.168.0.2. don't pass ips or pass with * means no bind」——多个 IP 用半角逗号分隔就可以。
这对接 SaaS 型工具很实用,因为对方通常会给你一组 2~3 个固定出口 IP。你自己架的 VPS 通常就 1 个固定 IP。用 SaaS 平台的话对方会给你固定出口 IP——TVSBot 的 dashboard 会直接显示要填的后端 IP。
其他工具数量不一,接工具之前先问清楚。动态出口 IP 的工具你就绑不了 IP 白名单,得回头权衡是不是可以接受。
设定三:把跑机器人的 key 放在 sub-account——Bybit 从架构上就把 Withdraw 拿掉了
这一条是这篇跟 Binance 版最大的不同,也是Bybit 在 API 架构上做得最彻底的地方——子账户的 key 官方文档明讲「Wallet 只能有 AccountTransfer 与 SubMemberTransferList」,换句话说子账户建出来的 key,即使你想勾 Withdraw 都勾不了。这一节值得单独拆一个 H2 讲清楚。
sub-account 隔离:Bybit 把 Withdraw 从架构上锁死了
Bybit V5 API 文档的 create-sub-api(建立子账户的 API Key)章节,permissions 对象的 Wallet 字段官方定义原文是「Wallet. ["AccountTransfer","SubMemberTransferList"]」——字段里就只有这两个值可以选,没有 Withdraw 这个选项。
同一份文档的 apikey-info(查 key 信息)把 Wallet 的完整定义写成「AccountTransfer, SubMemberTransfer(master account), SubMemberTransferList(sub account), Withdraw(master account)」——Withdraw 被明确标成「master account」专属。
这个差异对你的实务意义很大:就算你子账户的 key 完全外泄,攻击者也没有办法直接提币。
他最多只能乱下单、把子账户内的资金 market sell 成别的币,但他打不了 Bybit 的提币 API——那个 endpoint 会直接因为权限不足被 Bybit 拒绝。这是 Binance 只能靠「你自己记得不勾」达成的效果,Bybit 用 API 架构做成硬性规定。
举例:你主账号有 10 万 USDT,机器人只跑 5,000 USDT 的策略——那把这 5,000 分到独立子账户,出事的话最多损失 5%,比全部混在主账号安全很多。这个原则不是 Bybit 专属,是所有多资产账户的通用做法。
但 Bybit 从 API 架构上就把子账户的提币路径拿掉,等于帮你把「忘记勾错」这个常见错误事先挡掉了。
| Binance | Bitget | Bybit | ||
|---|---|---|---|---|
| sub-account 的 key 能不能勾 Withdraw | 能勾(要自己记得不勾) | 能勾(要自己记得不勾) | 不能勾——API 架构就拿掉了 | |
| sub-account 建 key 的方式 | 主账号代建 | sub-account 自己建(需主账号开权限) | master API 调用或直接用 sub-account 登录建 | |
| 认证需要几把 credential | 2 把(Key + Secret) | 3 把(Key + Secret + Passphrase) | 2 把(Key + Secret) | |
| 没绑 IP 的 key 到期规则 | 30 天闲置删除 | 官方未写明 | 90 天失效;改密码后 7 天失效 |
这张表不是要判 Bybit 的做法比较好——各家有各家的思路。Bybit 用 API 架构强制子账户不能提币,对会忘记或不熟悉权限模型的人特别友善。Bitget 那种「子账户可以自己管 API」的自由度,对团队各自跑不同策略比较有用。Binance 一手代管的做法,对单人单机器人反而是简单的。挑哪家看你实际场景。
90 天到期规则:Bybit 有明文,只是比 Binance/BingX 宽
Bybit 官方 V5 API 文档的 create-sub-api 章节、ips 字段的说明逐字写着:「No ip bound api key will be invalid after 90 days」——没绑 IP 的 key 90 天后失效。
同段还补了一句:「api key without IP bound will be invalid after 7 days once the account password is changed」——就算 key 才建几天,只要你改过账户密码,没绑 IP 的 key 7 天就会失效。
apikey-info 的响应字段里有一个 deadlineDay(剩余有效天数)跟 expiredAt(失效日期),只有没绑 IP 或改过密码的 key 才会有值。
Bybit 的 90 天最宽,意味着你要是接了 Bybit 又忘了绑 IP,机器人不会很快就静默断线,但那三个月里它是裸奔的。反过来说,如果你有绑 IP,这条规则整条不适用,你的 key 会一直好好活着。
查证日期 2026 年 8 月,如果 Bybit 之后改规则、这篇会过时。比较稳的做法是别依赖这个到期机制,自己排程每 6 个月手动轮替一次 key——不管交易所会不会帮你做,你自己做。
建 Bybit API Key 的实际流程
Bybit 的 UI 会偶尔改版,这里不写具体像素位置的按钮动线——只给你必经的步骤骨架。假设你要走「子账户跑机器人」这条路,流程比单建一把主账号 key 多两步,但整个 workflow 只做一次,之后就稳了。
【前置:新账号 48 小时内不能建 key】
0. 官方风控规则:新注册账号的前 48 小时无法建立 API key
(官方 help center 明文写的,时间到了会自动解除)
【第一次设置:把 sub-account 建起来】
1. 登录 Bybit → 右上角头像 → Sub-Accounts
2. Create Sub-Account → 填 sub-account username(6-16 字,字母数字)
3. memberType 选 normal subaccount(不要选 custodial)
4. 从主账号透过 Universal Transfer 把要给机器人的资金拨到 sub-account
【建 API key:两条路二选一】
路线 A:直接用 sub-account 登录建
5A. 用 sub-account 账号登录 → 右上头像 → API → Create New Key
6A. 选 System-generated API Keys(新手就这条,走 HMAC)
7A. 设 note(例如 tvsbot-prod、grid-bot-01)
8A. 勾权限:Contract Trade 或 Spot Trading(依你策略)
9A. 不要勾 Withdrawal(sub-account 的 UI 也不会给你这个选项)
10A. 填 IP 白名单(多个 IP 用半角逗号分隔)
11A. 过 2FA → 拿到 API Key + Secret(Secret 只显示一次,立刻复制)
路线 B:用主账号 key 调用 /v5/user/create-sub-api
5B. 给机器人建 key 的自动化流程可以走这条,适合有多个 sub-account 要管的情境
6B. 调用时 permissions 对象不要放 Withdraw——放了会被 Bybit 直接拒
7B. 填 ips 数组与 note,响应会直接把 apiKey + secret 传回来Secret Key 只会显示一次——这是所有交易所的共通规则。Bybit 不需要 Passphrase,所以你只要存好 API Key 与 Secret 两把字符串就完成了。
密码管理工具(1Password、Bitwarden、macOS Keychain)都可以。贴进纯文本文件、Slack、Email 是不好的习惯,一次养成一次痛。
怎么挑串接 Bybit 的自动化工具
Bybit 是我们自己TradingView Webhook 支持交易所整理里标记「有官方 REST/WebSocket API 可对接、能接自动下单」的名单成员——这代表市面上不少工具都声称能接。挑工具时值得问清楚三件事:
- 它会不会要求你把 key 开 Withdraw 权限?会的话直接跳过这个工具——现货与合约下单这件事技术上永远不需要提币权限,会要求就是架构有问题。
- 它给你的固定 IP 有几个?多数 SaaS 是 1~3 个,Bybit 允许逗号分隔多个 IP,你都塞得进去。有些工具是动态出口 IP,这种你就没办法绑 IP 白名单。
- 你的 Secret Key 存在他们那边的方式是什么?明文存数据库是警讯。加密储存、而且加密主密钥跟数据库实体分开存放,是值得问清楚的基本门槛。
就我们自己来说:TVSBot 用 Fernet(AES-128-CBC + HMAC-SHA256)加密储存你的 API Key 与 Secret,加密主密钥只放在环境变量、跟数据库本身分开存放。
每一笔下单都直接用你自己的 key 调用 Bybit 的 V5 API,我们不会持有你的资金。Dashboard 会显示要填进 Bybit 白名单的后端 IP,并在设置文档里建议只勾 Contract Trade + Spot Trading、不勾 Withdrawal。
同一份 checklist 适用于任何非托管工具、不只 TVSBot——所以就算你最后选了别家,这一节的清单也用得上。
诚实的一段:这篇文章没解决的问题
即便你把上面三个设定全部做好,还有一些风险是这篇教学无法帮你消除的,写在这里是为了让你有正确的预期:
第一,交易所本身被黑这件事没有 API key 层级的防御可以挡——你的资产放在 Bybit 上,就是承担 Bybit 这个平台的营运风险。这一层要靠交易所的 Proof of Reserves、保险基金、以及你自己分散持有到多家平台或冷钱包来处理,跟 key 怎么设置无关。
第二,你自己的策略把钱亏掉,跟 API key 安全无关。这篇没有讨论任何策略层面的风险。即使是最保守的 grid bot、资费套利,遇到极端行情都会亏损。策略层面的风险评估请看Kelly 公式与仓位大小、ATR 波动率动态调整仓位两篇。
第三,我们没能对 Bybit 做完整的内部制度审计。本文所有关于 Bybit 官方规则的叙述都是根据可公开查证的 V5 API 文档与 help center 整理出来的,查证日期 2026 年 8 月。交易所政策会在没有太多预告的情况下变动,实际设置前建议自己再去 Bybit 官方 API 文档页面确认一次现行规则。
Integration Guidance 章节写着「IP addresses located in the US or Mainland China are restricted and will return a 403 Forbidden error」——你机器人所在的 VPS 如果在这两个区域,连 API 都连不上,这件事不是 key 设置能救的。另外新注册账号的前 48 小时也建不了 API key。常见问题
Bybit 的 API 为什么不需要 Passphrase?跟 Bitget、OKX 有什么差别?
Bybit 官方 V5 API 的认证只需要两把 key:ACCESS-KEY(API Key)加上用 Secret Key 算出来的 X-BAPI-SIGN。Bitget 跟 OKX 多了第三把 Passphrase 是那两家的设计选择,Bybit 没有走这条路。
实务意义是你少一件事要藏,但也少一层保护——只要两把外泄,攻击者就能算出签名。Secret 的保存要更严,不要塞进任何纯文本文件或聊天窗口。
我一定要用 sub-account 建 key 吗?直接用主账号建不行吗?
技术上可以,官方没有强制。但如果你机器人管理的资金超过你可以承受一次归零的金额,用子账户隔离就值得做。
Bybit 官方 V5 API 文档明讲子账户的 Wallet 权限「["AccountTransfer","SubMemberTransferList"]」,没有 Withdraw 这个选项,等于架构上就把提币路径锁死了。这是 Binance/Bitget 都要靠「你记得不勾」达成的效果,Bybit 直接写死。
Bybit 的 key 会自动到期吗?我要多久换一次?
Bybit 官方 V5 API 文档明文:「No ip bound api key will be invalid after 90 days」——没绑 IP 的 key 90 天后失效。
还有一条:「api key without IP bound will be invalid after 7 days once the account password is changed」——改过密码后 7 天再失效一次。绑了 IP 的 key 不受这条约束,会一直活着。
建议把「每 6 个月主动轮替一次」写进你自己的排程——不管交易所会不会帮你做,你自己做。
System-generated 跟 Auto-generated 两种 key 怎么选?
System-generated 是 Bybit 帮你产一对 HMAC key,就是常见的 API Key + Secret 两把字符串,多数工具都支持。
Auto-generated 是你自己用 bybit 官方 api-rsa-generator 产一对 RSA 公私钥,把公钥传给 Bybit,私钥不离开你的机器。RSA 这条的优势是「Bybit never holds your private key」,就算 Bybit 侧数据外泄你的 secret 也不会漏;缺点是下游工具得支持 RSA_SHA256 签名。
新手直接选 System-generated;懂 RSA 又用得惯的老手选 Auto-generated 会更安全。
Bybit key 外泄之后,我第一时间要做什么?
第一步是立刻进 Bybit 的 API Management 页把该 key 删除——这件事优先于任何其他动作,因为 key 存活的每一分钟都是损失的机会。
删掉之后检查近期订单纪录与提币纪录(提币纪录尤其重要,如果你之前不小心开了 Withdraw 权限)。发现可疑提币立刻联络 Bybit 客服。
最后:建新 key 时记得检讨这次为什么会外泄——是电脑中毒、SaaS 被黑、还是自己 push 到公开 repo——不修根本原因,换新 key 只是把时间往后拖。
跟 Binance API key 设置教学相比,这篇差在哪里?
四个关键差异——第一,Bybit 的子账户 key 不能勾 Withdraw(官方 V5 文档写死),Binance 则是能勾、要你自己记得不勾。
第二,Bybit 没绑 IP 的 key 90 天失效,Binance 是 30 天。第三,Bybit 支持 RSA 非对称签名作为进阶选项。第四,Bybit UTA 的一把 key 可以同时跑 Spot、Contract、Options,Binance 那边还是分开的 API endpoint。
核心「不要勾 Withdraw、要绑 IP」的逻辑两家一样。想看 Binance 专属的完整流程,可以看Binance API Key 安全设置完整教学。
Get started
把 TradingView 信号接到 Bybit 自动下单——TVSBot 非托管、用你自己的 API key、dashboard 显示要填进 Bybit 白名单的后端 IP、下单前 dry-run、账户层级可设风控。
免费开始使用