我可以在没有任何凭据/访问令牌的情况下提取私有 Git 存储库

问题描述 投票:0回答:2

我的虚拟机操作系统最近更新了,并且我的大部分数据已迁移。重新安装了Git等。我仍然可以克隆/推送/拉取我的private GitHub 存储库。但是,我没有重新输入我的凭据。

这让我很困惑。过去,我使用私有访问令牌,因为我启用了2FA。为了尝试理解这一点,我删除了所有私人访问令牌。我仍然能够克隆/拉/推。然后我更改了密码。我仍然能够克隆/拉/推。

我不确定为什么我能够做到这一点。我尝试将私有存储库拉到另一台计算机上,系统提示我输入我的凭据。因此,虚拟机上肯定有一些东西包含我的一些凭据,但我不确定它们存储在哪里或如何存储。另外,考虑到我删除了访问令牌并更改了密码,我当然不能再这样做了。

我在 ~/.gitconfig.git-credentials 中查看了我的虚拟机。我重命名了这些文件,但我仍然能够克隆。我唯一的想法是,旧存储库之一在本地包含我的凭据,并且 Git 知道以某种方式获取它们。不过,为什么在我删除所有访问令牌并更改密码后这些凭据仍然有效?

git repository private
2个回答
1
投票

如果您无需输入凭据或访问令牌就能够克隆、拉取和推送到私有 GitHub 存储库,这可能是因为 Git 使用缓存的凭据。 Git 可以将凭据缓存一段时间,因此即使您删除访问令牌或更改密码,它仍然可能在您的计算机上存储有效的凭据。以下是可能发生这种情况的一些原因:

凭证管理器:Git 经常使用凭证管理器来缓存您的凭证。例如,在 Windows 上,Git 使用 Windows 凭据管理器,在 macOS 上,它使用 macOS 钥匙串。这些工具安全地存储您的 Git 凭据并在需要时自动提供它们。删除访问令牌或更改密码不一定会删除缓存的凭据。

SSH 密钥:如果您使用 SSH 访问 GitHub 存储库,Git 可能会使用 SSH 密钥进行身份验证。 SSH 密钥通常存储在 ~/.ssh 目录中。如果 SSH 密钥仍然存在并且与您的 GitHub 帐户关联,您可以继续访问存储库而无需输入凭据。

凭证助手:Git 允许使用凭证助手来存储和检索凭证。您可能配置了一个凭据帮助程序,即使在更改密码或删除访问令牌后,它仍然提供有效的凭据。


0
投票

我的问题的答案是:我为 Visual Studio Code OAuth 应用程序授权了 GitHub。我使用 Visual Studio Code 连接到虚拟机,因此我的凭据以这种方式存储。

有点奇怪的是,OAuth应用程序在密码更改的情况下仍保持授权,但我猜 GitHub 并不将其视为强大的攻击媒介。

© www.soinside.com 2019 - 2024. All rights reserved.