当该别名负责代理路由时,请在 Git 远程中使用这个 SSH 别名:

Host code-via-proxy
    HostName git.example.net
    User git
    ProxyCommand nc -X connect -x proxy.example.net:8080 %h %p

code-via-proxy 会与所提供的 SSH 名称进行匹配,随后由 HostName 确定真实服务器。该示例需要兼容 OpenBSD 的 netcat:-X connect 向 SSH 目标发起 HTTP CONNECT 请求。

对于新的 checkout:

git clone git@code-via-proxy:team/project.git

对于已有的 checkout:

git remote set-url origin git@code-via-proxy:team/project.git

请替换为真实的仓库路径。别名改变的是连接选择,而不是仓库在其服务器上的身份。对于位于允许公共中转的网络中的公开 Git SSH 服务器,HTTP 代理列表可提供代理主机和端口的候选项。只有在节点允许 CONNECT 到实际 SSH 目标和端口时,才使用这个不含代理账号的示例。

使用 [email protected]:team/project.git 的远程会改为匹配 git.example.net。它不会仅仅因为别名的 HostName 指向那里就选中别名。要么使用别名,要么把预期的规则放在真实名称之下。

也要检查更早的匹配块。对大多数 SSH 选项而言,最先获得的值生效,因此请把具体设置放在定义同一选项的宽泛默认值之前。

相关文章