有时,防火墙完全拒绝允许SSH连接。如果无法选择使用带有凭据缓存的HTTPS克隆,您可以尝试使用通过HTTPS端口建立的SSH连接进行克隆。大多数防火墙规则应该允许这样做,但代理服务器可能会干扰。
测试是否可以通过HTTPS端口进行SSH,请运行以下SSH命令:
$ssh-T-p443git@ssh.github.com
HiUSERNAME!You'vesuccessfullyauthenticated,butGitHubdoesnot
provideshellaccess.
注意:端口443的主机名是ssh.github.com,不是github.com。
如果这有效,那就太好了!现在,要克隆存储库,您可以运行以下命令:
gitclonessh://git@ssh.github.com:443/YOUR-USERNAME/YOUR-REPOSITORY.git
如果您能够git@ssh.github.com通过端口443进行SSH访问,则可以覆盖您的SSH设置,以强制与GitHub.com的任何连接通过该服务器和端口运行。
要在SSH配置文件中进行设置,请编辑位于的文件~/.ssh/config,并添加此部分:
Hostgithub.com
Hostnamessh.github.com
Port443
Usergit
您可以通过再次连接到GitHub.com来测试这是否有效:
$ssh-Tgit@github.com
HiUSERNAME!You'vesuccessfullyauthenticated,butGitHubdoesnot
provideshellaccess.
更新已知主机
切换到端口443后第一次与GitHub交互时,您可能会收到一条警告消息,指出未在中找到主机known_hosts,或者已通过其他名称找到该主机。
Theauthenticityofhost'[ssh.github.com]:443([140.82.112.36]:443)'can'tbeestablished.
ED25519keyfingerprintisSHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
Thishostkeyisknownbythefollowingothernames/addresses:
~/.ssh/known_hosts:32:github.com
Areyousureyouwanttocontinueconnecting(yes/no/[fingerprint])?
假设SSH指纹与GitHub发布的指纹之一相匹配,则可以安全地对这个问题回答“是”。