1

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

4

2 回答 2

0

这可以通过GitCredentialManager/git-credential-manager问题 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附带

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

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

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

于 2022-01-31T07:52:46.843 回答
0

通过在 Chocolatey 上安装最新版本的git credential manager(不确定是否有必要)并将我的 git credential store 切换到 dpapi 来修复。

有关如何执行此操作的说明,请参阅https://github.com/GitCredentialManager/git-credential-manager/blob/main/docs/credstores.md#dpapi-protected-files 。

于 2022-01-31T07:46:28.497 回答