【问题标题】:How to debug "Could not add identity : agent refused operation" on Windows?如何在 Windows 上调试“无法添加身份:代理拒绝操作”?
【发布时间】:2020-09-26 13:21:09
【问题描述】:

我正在尝试使用 Windows 在 Gitlab CI 上编写一个 PowerShell 脚本,该脚本将模仿我的 Linux 构建。作为第一步,我需要添加一个私钥,以便我可以下载所有必需的子模块:

mkdir C:\Users\$env:UserName\.ssh
$key_path = "C:\Users\$env:UserName\.ssh\id_rsa"
echo "$DEPLOY_PRIVATE_KEY" > $key_path
(Get-Content $key_path -Raw).Replace("`r`n","`n") | Set-Content $key_path -Force
Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent
ssh-add 

但是,我得到:

Could not add identity "C:\Users\gitlab_runner/.ssh/id_rsa": agent refused operation

因为我并不真正了解 Windows,所以我不确定如何处理这个问题。不幸的是,ssh-add 的 Windows 镜像没有详细模式 -v。如何获得更多关于代理拒绝的信息?拒绝的原因可能是什么?

干杯!

编辑

根据@VonC 的建议,我确保文件夹/密钥的权限不太开放,并且我的代理确实在运行:

$ Cmd /c Icacls  %UserProfile%\.ssh /c /t /Inheritance:d
 processed file: C:\Users\gitlab_runner\.ssh
 processed file: C:\Users\gitlab_runner\.ssh\id_rsa
 Successfully processed 2 files; Failed processing 0 files
$ Cmd /c Icacls  %UserProfile%\.ssh /c /t /Grant %UserName%:F
 processed file: C:\Users\gitlab_runner\.ssh
 processed file: C:\Users\gitlab_runner\.ssh\id_rsa
 Successfully processed 2 files; Failed processing 0 files
$ Cmd /c Icacls  %UserProfile%\.ssh /c /t /Remove Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users
 processed file: C:\Users\gitlab_runner\.ssh
 processed file: C:\Users\gitlab_runner\.ssh\id_rsa
 Successfully processed 2 files; Failed processing 0 files
$ Get-Service ssh-agent
 Status   Name               DisplayName                           
 ------   ----               -----------                           
 Running  ssh-agent          OpenSSH Authentication Agen

从代码的角度来看,我查看了 openssh repo 的 ssh-add.c,如果我没记错的话,发现在获取身份列表时会抛出错误 SSH_ERR_AGENT_FAILURE

【问题讨论】:

  • 你想要linux版本吗? bash -c "ssh-add -v" 有效吗?

标签: windows powershell ssh gitlab-ci


【解决方案1】:

以防万一,请确保您刚刚创建的%USERPROFILE%\.ssh的权限不要太开放:请参阅this answer修复它。

检查 SSH-Agent 服务的状态以确认它确实已启动,如 this issue

【讨论】:

  • 谢谢,我在权限更改时遇到了一些错误。一旦我弄清楚了,我会回复你:)祝你有美好的一天:))
  • 所以我遵循了这两个建议,不幸的是我没有设法添加密钥。作为记录,我从Icacls 获得的信息表明,对于每个命令,密钥(和文件夹)的处理都成功并且Get-Service ssh-agent 返回运行。可以用我执行的步骤更新我的帖子吗?
  • @Proko Sure:编辑您的问题以添加更多详细信息。
猜你喜欢
  • 1970-01-01
  • 2020-05-20
  • 2021-02-10
  • 1970-01-01
  • 2015-11-15
  • 2023-03-13
  • 2021-06-25
  • 2020-08-31
  • 2017-10-30
相关资源
最近更新 更多