【发布时间】:2022-01-31 15:52:46
【问题描述】:
我在运行 Windows 10 的远程计算机上使用 git over ssh。当我尝试执行 git pull 时,输入凭据后标题中出现错误消息。
【问题讨论】:
标签: windows git ssh git-credential-manager
我在运行 Windows 10 的远程计算机上使用 git over ssh。当我尝试执行 git pull 时,输入凭据后标题中出现错误消息。
【问题讨论】:
标签: windows git ssh git-credential-manager
已通过安装最新版本的 git credential manager on chocolatey(不确定是否有必要)并将我的 git 凭据存储切换到 dpapi 来修复。
【讨论】:
这可以通过GitCredentialManager/git-credential-manager issue 325来说明
您看到的错误与 Windows 处理“登录会话”和“凭据集”的方式有关。
GCM Core 使用 Windows 凭据管理器 (
wincred.h) 在 Windows 上安全地存储凭据。
我们通过 Windows API 与 wincred 进行交互:CredRead、CredWrite、CredDelete和CredEnumerate。在您的情况下返回的错误是 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)。
【讨论】: