使用个人访问令牌通过 sslVerify=false 克隆 git 存储库

Cloning a git repository with sslVerify=false using a personal access token

我正在尝试以下命令:

git -c http.sslVerify=false clone https://<github_username>:<personal_access_token>@140.82.121.4/<path/to/repo>

其中 140.82.121.4github.com 的 IP 地址。 结果是:

Cloning into '<repo_name>'...
remote: Repository not found.
fatal: Authentication failed for 'https://140.82.121.4/<path/to/repo>/'

如果我正在执行相同的操作但使用 github 的域名,那么它会起作用:

git -c http.sslVerify=false clone https://<github_username>:<personal_access_token>@github.com/<path/to/repo>

它也适用于 github 的 IP 和直接访问(不使用个人访问令牌):

git -c http.sslVerify=false clone https://140.82.121.4/<path/to/repo>

知道如何使用 IP 和个人访问令牌吗?

P.S:我知道设置 http.sslVerify=false 是不安全的,但我的用例仍然需要它。目标是能够访问没有域名的本地 git 服务器(比方说 git 集线器),这就是为什么我需要它来使用 IP 地址。

谢谢!

您不能依赖仅使用普通 IP 地址使用 GitHub(即 github.com)克隆存储库;它根本不能保证工作。那是因为当你为HTTP或HTTPS使用域名时,它连接到IP地址并在Host header中发送域名。此域名用于将数据路由到适当的服务,因为 GitHub 通过相同的 IP 地址托管许多服务。比如gist.github.comgithub.com是同一个IP,只能这样区分

您也不应该 hard-code GitHub 的 IP 地址或主机文件中的其他服务,因为它们可以而且确实会发生变化,如果您仍然这样做,您可能会发现您无法再访问根本没有这些服务。

如果您的on-premises服务器是GitHub企业服务器实例,您可能能够使用hard-coded IP地址和个人访问令牌,但通常使用 hard-coded IP 地址是个坏主意,您应该避免使用它,而应指定域名。如果您尝试使用 IP 地址进行克隆并且该地址发生变化,则每个存储库的每个人的遥控器都需要更改,并且您的所有用户都会对您生气。如果您确实愿意,您仍然可以为 GHES 实例执行此操作,但不能为 github.com.

既然你要对你的用户负责和善意并设置一个域名,你也应该负责并设置一个公共信任的证书。我相信您已经知道,关闭 TLS 验证不会提供针对主动攻击者的保护,并且允许任何想要读取和修改您的所有数据的人。