Endpoint 与连接方式
endpoint 表示目标 daemon,route 表示到达它的一条路径。把多个 route 放在同一个 endpoint 下,可以在不改变 terminal ID 和权限模型的前提下选择不同网络路径。
四种 route
| Route | 到达方式 | 适合场景 | 主要信任锚 |
|---|---|---|---|
| Local | 当前用户的本地 socket | 本机 CLI/TUI | 本地文件权限与 daemon identity |
| SSH | OpenSSH 加隧道连接远端 loopback 服务 | 已有 SSH 管理能力 | SSH host key、daemon identity、grant |
| Direct | 直接访问 daemon 发布的 signaling/ICE-TCP 地址 | 局域网或自管公网 | daemon identity、grant |
| Cloud | 托管发现,优先 P2P,必要时 Relay | NAT、内网和移动网络 | daemon identity、grant、Cloud route authorization |
Cloud 不是其他 route 的必需依赖。Local、SSH 和 Direct 都可以在开源仓库能力内独立使用。
查看 endpoint
anytty endpoint list
anytty endpoint show local
anytty endpoint set-default local
anytty endpoint test local
list 只读本地 registry,不会拨号。show 显示 endpoint identity、route 和选择策略。test 会实际连接并验证 AnyTTY 协议可达性;有多条候选 route 时,通过 --route 指定要测试的路径。
Local
没有 endpoint registry 时,AnyTTY 会提供默认 Local endpoint。也可以显式添加:
anytty endpoint add local laptop --label "My laptop" --socket auto
Local route 使用当前用户的 daemon socket,不应通过放宽 socket 权限让其他系统用户共享。需要跨用户或跨机器时,应配置 SSH、Direct 或 Cloud,并通过配对签发独立 grant。
SSH
SSH route 先调用 OpenSSH,再访问远端机器 loopback 上的 AnyTTY signaling 和 ICE-TCP。默认远端地址为 127.0.0.1:41120 和 127.0.0.1:41121。
anytty endpoint add ssh build \
--label "Build server" \
--host build.example.com \
--user dev \
--host-key SHA256:REPLACE_WITH_PINNED_FINGERPRINT
--host 可以使用 OpenSSH config 中的别名,跳板机可用 --proxy-jump。生产环境应固定并验证 host key,不要在警告出现时盲目接受变化。SSH 负责到达远端,terminal 和 file 权限仍由 daemon grant 决定。
Direct
Direct 适合你能控制地址映射、防火墙和证书身份的环境。daemon 需要监听可达地址,客户端 endpoint 保存 signaling 与 ICE-TCP 地址以及配对得到的 credential。
anytty daemon start --route 0.0.0.0:41120
anytty pair create --route direct --direct-address workstation.local:41120
优先通过 pairing claim 导入 Direct route,避免手工拼接 device identity 和 credential reference。不要把监听端口直接暴露到不受控公网;网络可达不等于获得授权,但公开服务仍会增加扫描与拒绝服务风险。
Cloud
Cloud route 通过已注册 daemon 的设备 ID发现目标,先尝试 P2P,网络不允许时再使用 Relay。它适合无法稳定配置入站端口的 NAT、企业网络或移动网络。详见AnyTTY Cloud。
多 route 与选择策略
同一个 endpoint 可以增加、禁用、更新或移除 route:
anytty endpoint route add ssh workstation office-ssh --host workstation.example.com
anytty endpoint route disable workstation cloud
anytty endpoint route enable workstation cloud
anytty endpoint route remove workstation old-lan
准确位置参数以对应子命令 --help 为准。route 的 priority 数字越小越早尝试;manual-only 可以把路径排除在自动选择之外。endpoint 的 connect mode 可设为 auto、on_demand 或 manual。
下一次会话的明确偏好由 policy 控制:
anytty endpoint policy show workstation
anytty endpoint policy set workstation --route auto
anytty endpoint policy set workstation --route cloud --cloud-path p2p
Cloud path 可以选择 auto、p2p、relay 或 smart_route,Relay transport 可以选择 auto、udp 或 tcp。只有在排障或明确网络要求下才固定路径;通常使用 auto。

NAT、防火墙与代理
- Local 只需要当前用户访问本地 socket。
- SSH 需要 OpenSSH 路径可用,并允许隧道访问远端 loopback 端口。
- Direct 需要客户端能到达发布的 signaling 和 ICE-TCP 地址;端口映射必须和 claim 中的地址一致。
- Cloud 需要访问官方 Controller 与选定 Edge;P2P 失败时 Relay 能否使用还受套餐、配额和网络出口限制影响。
- HTTP 代理不一定能转发 WebRTC/ICE 或任意 TCP/UDP 流量,企业网络中应和管理员确认允许的出口协议。
延迟与路径诊断
先分层排查:
anytty daemon status确认目标 daemon 正常。anytty endpoint show ID确认 endpoint、route 和 identity。anytty endpoint test ID --route ROUTE单独测试一条路径。- Cloud route 额外运行
anytty cloud status和anytty cloud edge。 - 查看
anytty daemon logs,只分享脱敏后的错误码和关联 ID。
路径失败可以触发已配置的候选 route,但身份、认证和授权失败必须直接拒绝,不能通过 fallback 降低安全要求。
禁用与移除
endpoint disable ID 暂停使用并保留配置,endpoint remove ID 从当前客户端 registry 移除。两者都不会停止远端 daemon,也不会自动撤销 daemon 上的 grant。彻底下线客户端时,还要在目标 daemon 上执行 anytty access revoke。
endpoint share 可以通过一次性 TLS 会话传递便携 route 与 policy,并要求接收端先预览再原子导入。它不应被当成替代 pairing grant 的长期同步服务。