You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows GitLab Runner使用SCP命令报错,咨询添加SCP包可行性

解决Windows GitLab Runner中scp命令未找到的问题

遇到Windows GitLab Runner报scp is not recognized as an internal or external command太正常了——毕竟Windows原生不带scp命令嘛!下面给你几个靠谱的解决办法,从原生支持到第三方工具都有,按需选就行:

方案1:开启Windows自带的OpenSSH客户端(推荐)

Windows 10 1809版本及以上、Windows 11默认预装了OpenSSH客户端,只是可能没开启:

  • 图形化操作:打开「设置」→「应用」→「可选功能」→「添加功能」,搜索「OpenSSH 客户端」,安装完成后重启GitLab Runner服务(右键「此电脑」→「管理」→「服务和应用程序」→「服务」,找到GitLab Runner重启)。
  • 命令行操作(更快捷):打开PowerShell(管理员权限),执行:
    Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
    
    然后重启Runner服务:
    Restart-Service gitlab-runner
    
    完成后就能直接用scp命令了,和Linux下的用法完全一致。

方案2:用PowerShell原生命令替代scp(无需额外安装)

如果不想装OpenSSH,也可以用PowerShell自带的Copy-Item结合远程会话来实现文件传输,适合Windows到Windows的场景,也支持连接开启了WinRM的Linux服务器:

# 先建立远程会话(CI环境建议用密钥认证,避免手动输入密码)
$remoteSession = New-PSSession -ComputerName "你的远程主机IP/域名" -Credential (Get-Credential)

# 复制本地文件到远程服务器
Copy-Item -Path "./本地文件路径/xxx.zip" -Destination "/远程目标路径/" -ToSession $remoteSession

# 用完记得关闭会话
Remove-PSSession $remoteSession

方案3:用PuTTY的pscp工具替代scp

如果你习惯用第三方工具,可以用PuTTY套件里的pscp.exe,它是Windows下的scp替代工具:

  • 下载PuTTY工具集,提取其中的pscp.exe,放到GitLab Runner能访问的路径(比如Runner的安装目录,或者加到系统环境变量PATH里)。
  • 在gitlab-ci.yml里直接用pscp替代scp,语法几乎一致:
    script:
      - pscp -i ./private-key.ppk ./local-file.txt user@remote-host:/target/path/
    
    注意这里用-i指定私钥文件,避免手动输入密码,CI环境一定要用密钥认证。

小提示

不管用哪种方案,密钥认证都是CI环境的首选——毕竟CI里没法手动输入密码,而且密钥认证更安全。比如用OpenSSH的话,在Windows Runner机器上用ssh-keygen生成密钥对,把公钥添加到远程服务器的~/.ssh/authorized_keys文件里即可。

内容的提问来源于stack exchange,提问作者GGO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:22:04