【问题标题】:How to fix git error "Failed to enumerate credentials. [0x520]"如何修复 git 错误“无法枚举凭据。[0x520]”
【发布时间】:2022-01-31 15:52:46
【问题描述】:

我在运行 Windows 10 的远程计算机上使用 git over ssh。当我尝试执行 git pull 时,输入凭据后标题中出现错误消息。

【问题讨论】:

    标签: windows git ssh git-credential-manager


    【解决方案1】:

    已通过安装最新版本的 git credential manager on chocolatey(不确定是否有必要)并将我的 git 凭据存储切换到 dpapi 来修复。

    请参阅https://github.com/GitCredentialManager/git-credential-manager/blob/main/docs/credstores.md#dpapi-protected-files,了解如何操作。

    【讨论】:

      【解决方案2】:

      这可以通过GitCredentialManager/git-credential-manager issue 325来说明

      您看到的错误与 Windows 处理“登录会话”和“凭据集”的方式有关。

      GCM Core 使用 Windows 凭据管理器 (wincred.h) 在 Windows 上安全地存储凭据。
      我们通过 Windows API 与 wincred 进行交互:CredReadCredWriteCredDeleteCredEnumerate

      在您的情况下返回的错误是 ERROR_NO_SUCH_LOGON_SESSION (0x520),这意味着:

      登录会话不存在或没有与此登录会话关联的凭据集。
      网络登录会话没有关联的凭据集

      这里的关键部分以粗体显示。

      当您通过 SSH 连接时,sshd 守护程序/Windows 服务以 NT AUTHORITY\NETWORK SERVICE 帐户(很可能/默认情况下)运行,这会在 SSH 客户端连接时创建网络登录会话。

      通过一些在线搜索,发布的一种解决方法是将 sshd 运行的帐户更改为您的真实用户,然后该帐户将具有关联的凭据集。根据设置,您的里程可能会有所不同。

      如果您尝试使用内置 cmdkey 命令来交互 Windows 凭据管理器中的凭据存储,您会看到类似的错误或消息,例如“仅为此登录保存”。

      升级到最新版GCM comes with

      在最新的 GCM Core 版本 (v2.0.567) 中,Windows 支持使用除 Windows 凭据管理器之外的其他凭据存储,该凭据存储不应具有相同的远程会话限制。

      您可以在此处阅读有关不同选项的更多信息:https://aka.ms/gcmcore-credstores

      可能有助于此 SSH 方案的特定存储是 DPAPI 保护的文件存储
      凭据使用 Windows DPAPI 加密(基于您当前的用户帐户)进行保护,并写入磁盘上的文件(可配置;默认为 %USERPROFILE%\.gcm\dpapi_store)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-20
        • 1970-01-01
        • 2015-10-19
        • 1970-01-01
        • 1970-01-01
        • 2019-12-04
        • 2017-12-29
        • 2013-03-05
        相关资源
        最近更新 更多