【发布时间】: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