windows - 如何在 Windows 上调试 "Could not add identity : agent refused operation"?

标签 windows powershell ssh gitlab-ci

我正在尝试使用 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 的建议,我确保文件夹/ key 的权限不太开放,并且我的代理确实在运行:

$ 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 存储库的 ssh-add.c,如果我没记错的话,发现在获取时抛出错误 SSH_ERR_AGENT_FAILURE身份 list 。

最佳答案

为了以防万一,请确保您刚刚创建的 %USERPROFILE%\.ssh 的权限没有太开放:参见 this answer修复它。

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

关于windows - 如何在 Windows 上调试 "Could not add identity : agent refused operation"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62247463/

相关文章:

winforms - Parent 如何在 System.Windows.Forms 中工作

linux - Shebang 导致脚本失败

perl - 有没有办法远程到不同的机器,并在那里连续运行多个命令(使用 perl)?

windows - 在服务器上安装同一 Windows 服务的多个实例

c# - 无需 wddm 1.1 即可运行 Windows 7 模拟器

powershell - 使用 Powershell 将 csv 导入到 SharePoint 列表

powershell - Powershell输出格式?

windows - 在 Windows 上构建 MonoDevelop 7.2.x 失败

windows - GitHub 分支 : Case-Sensitivity Issue?

linux - Makefile:3: *** 缺少分隔符。停止