跳至主要内容

通过 HTTPS 端口使用 SSH

有时,防火墙会完全拒绝 SSH 连接。如果使用 HTTPS 克隆与凭据缓存 不是一种选择,您可以尝试使用通过 HTTPS 端口建立的 SSH 连接进行克隆。大多数防火墙规则应该允许这样做,但代理服务器可能会干扰。

GitHub Enterprise Server 用户:目前不支持通过 HTTPS 端口访问 GitHub Enterprise Server。

要测试通过 HTTPS 端口的 SSH 是否可行,请运行以下 SSH 命令

$ ssh -T -p 443 [email protected]
> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.

注意:端口 443 的主机名为 ssh.github.com,而不是 github.com

如果成功,那就太好了!如果失败,您可能需要 按照我们的疑难解答指南操作

现在,要克隆存储库,您可以运行以下命令

git clone ssh://[email protected]:443/YOUR-USERNAME/YOUR-REPOSITORY.git

启用通过 HTTPS 的 SSH 连接

如果您能够通过端口 443 SSH 到 [email protected],则可以覆盖您的 SSH 设置,以强制任何连接到 GitHub.com 的连接通过该服务器和端口运行。

要在 SSH 配置文件中设置此项,请编辑 ~/.ssh/config 中的文件,并添加以下部分

Host github.com
    Hostname ssh.github.com
    Port 443
    User git

您可以通过再次连接到 GitHub.com 来测试它是否有效

$ ssh -T [email protected]
> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.

更新已知主机

在切换到端口 443 后第一次与 GitHub 交互时,您可能会收到一条警告消息,提示在 known_hosts 中找不到主机,或以其他名称找到。

> The authenticity of host '[ssh.github.com]:443 ([140.82.112.36]:443)' can't be established.
> ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
> This host key is known by the following other names/addresses:
>     ~/.ssh/known_hosts:32: github.com
> Are you sure you want to continue connecting (yes/no/[fingerprint])?

只要 SSH 指纹与 GitHub 发布的指纹之一匹配,回答“是”是安全的。有关指纹列表,请参阅“GitHub 的 SSH 密钥指纹”。