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

GitLab Runner(Windows)SSH传输文件超时问题求助

解决Windows GitLab Runner服务运行时SSH连接超时问题

问题根源:GitLab Runner以Windows服务运行时使用NT AUTHORITY\SYSTEM账户,而你之前配置的SSH密钥属于Administrator账户,SYSTEM账户无法读取到该密钥,导致SSH连接超时;而命令行运行Runner时用的是Administrator账户,所以能正常使用密钥。

方法1:为SYSTEM账户配置SSH密钥

  • 下载微软Sysinternals工具集里的psexec.exe,打开管理员权限的命令行,执行以下命令打开SYSTEM账户的交互式命令行:
    psexec -i -s cmd.exe
    
  • 在弹出的SYSTEM命令行窗口中,创建SYSTEM账户的SSH配置目录:
    mkdir C:\Windows\System32\config\systemprofile\.ssh
    
  • 复制Administrator账户下的SSH私钥(如C:\Users\Administrator\.ssh\id_rsa)和公钥(id_rsa.pub)到上述目录;或者直接在SYSTEM命令行里生成新密钥:
    ssh-keygen -t rsa -N "" -f C:\Windows\System32\config\systemprofile\.ssh\id_rsa
    
  • 将新生成的公钥内容添加到服务器B的authorized_keys文件中,然后在SYSTEM命令行测试连接:
    ssh user@serverB
    
  • 确保SYSTEM账户的.ssh目录及密钥文件权限正确:仅授予SYSTEM账户读写权限,避免权限过高被SSH拒绝。

方法2:修改GitLab Runner服务的运行账户为Administrator

  • 打开Windows服务管理器(运行services.msc),找到GitLab Runner服务。
  • 右键点击服务,选择「属性」,切换到「登录」选项卡。
  • 选择「此账户」,输入Administrator的账户名和密码,点击「确定」。
  • 重启GitLab Runner服务,此时Runner将以Administrator账户运行,直接使用已配置好的SSH密钥。
  • 注意:需确保Administrator账户密码未过期,避免后续服务因密码失效停止运行。

方法3:在CI流水线中指定SSH密钥路径

  • 在.gitlab-ci.yml的SSH命令中,通过-i参数明确指定私钥的绝对路径:
    job_name:
      script:
        - ssh -i C:\Users\Administrator\.ssh\id_rsa user@serverB "your_command"
        - scp -i C:\Users\Administrator\.ssh\id_rsa local_file user@serverB:/remote/path
    
  • 右键点击密钥文件(id_rsa),选择「属性」→「安全」,添加NT AUTHORITY\SYSTEM账户,授予其读取权限,确保SYSTEM账户能访问该密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:35:08