zai-org / zai-org/feedback

[建议 / Feature] SSH 远程连接支持 ProxyJump(跳板机/堡垒机)

Open
#105 6 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

priority: P2
Dominant language
No language data
Stars
22
Forks
1
PR merge metrics
No merged PRs in 30d

Description

⚠️ 原始内容误含私人配置,已由提交者清空。

提交前确认 · Pre-submission checklist
  • 我已搜索过现有 issue,确认这不是重复提议 / I searched existing issues and confirmed this isn't a duplicate.
  • 我已阅读 CONTRIBUTING.md / I've read CONTRIBUTING.md.
问题类别 · Category

SSH 远程连接 · Remote SSH Connection

使用场景 · Use case

很多团队的内网 GPU 服务器 / 开发机都不直接暴露公网,必须经过跳板机(bastion / jump host)才能访问。典型拓扑:

本地 (ZCode Desktop)  ──ssh──>  跳板机(bastion, 公网)  ──ssh──>  内网 GPU 服务器

痛点:ZCode Desktop 的 SSH 远程连接只支持单段直连,无法配置 ProxyJump 做第二跳,对内网机器(10.x / 192.168.x 等)完全连不上。用户只能手动开端口转发绕路,无法用 ZCode 原生远程会话管理。

建议方案 · Proposal

在「SSH 远程连接」配置中支持 ProxyJump(OpenSSH 标准),与原生 ~/.ssh/config 行为对齐:

  1. 配置项:新建/编辑连接时增加「跳板机 / ProxyJump」字段,可选择另一条已保存连接或直接填写 user@host:port
  2. 底层实现:复用 OpenSSH 的 ProxyJump / ProxyCommand 语义,无需自研转发。示意(脱敏):
Host bastion
    HostName <公网跳板机地址>
    User <跳板机用户>
    Port <端口>

Host internal-gpu
    HostName <内网目标地址>
    User <目标用户>
    ProxyJump bastion            # ← 关键:第二跳
  1. 进阶(可选):对跳板机开启 ControlMaster + ControlPersist 连接复用;支持直接解析本地 ~/.ssh/config;连接前分段健康检查,报错时指明是哪一跳失败。
期望收益 · Expected benefit

覆盖「跳板机 + 内网开发机」的真实企业/科研环境,与 OpenSSH 原生行为对齐,迁移零学习成本,让 ZCode 能管理内网 GPU 集群上的会话。

环境信息 · Environment
  • ZCode Desktop App
  • 平台:macOS
  • 场景:通过公网跳板机访问内网 GPU 服务器

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the SSH remote connection configuration described in this issue and review CONTRIBUTING.md, then compare the requested behavior with the local ~/.ssh/config and OpenSSH ProxyJump semantics. Define the smallest supported scope for selecting or entering a jump host and verify that a session can reach an internal target through it; the optional connection reuse, config parsing, and per-hop diagnostics need separate decisions.

Written by the indexing model from the issue text.

Assessment

Domain
desktop, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.