Windows-2019运行器拉取GitHub私有兄弟仓库SSH解析失败求助
解决Windows-2019 Runner拉取私有GitHub仓库失败的问题
问题根源
你的配置存在两个冲突点:
- 已经全局配置用SSH替代HTTPS拉取GitHub仓库,但最后一步
actions/checkout又传入了token参数,且该参数填的是SSH私钥——而token参数是用于HTTPS认证的,并非SSH密钥,这会导致Windows环境下的Git解析仓库地址时出错,生成key-blahblahblah.github.com这类无效主机名。 - Ubuntu Runner能正常工作,是因为其Git/SSH环境对这种冲突的容错性比Windows更好。
修复方案(二选一)
方案1:统一使用SSH拉取
保留SSH相关配置,移除最后一步checkout的token参数即可:
name: cd-build on: workflow_dispatch: push: branches: - master - qa - dev jobs: build: runs-on: windows-2019 env: APP_NAME: RemoteSignWorkerDotNet steps: - name: Code Checkout uses: actions/checkout@v3.5.0 - name: Setup to use ssh instead of https run: git config --global url.git@github.com:.insteadOf https://github.com/ - name: set key in ssh-agent uses: webfactory/ssh-agent@v0.7.0 with: ssh-private-key: ${{ secrets.MYORG_COMMONDOTNET_PRIVATE_KEY }} - name: Code Checkout MyOrg/Common.Net uses: actions/checkout@v3.5.0 with: repository: MyOrg/Common.Net path: Common.Net ref: master
方案2:改用HTTPS拉取(推荐Windows环境)
移除所有SSH相关配置,将最后一步的token参数替换为具有私有仓库读取权限的GitHub PAT(个人访问令牌):
name: cd-build on: workflow_dispatch: push: branches: - master - qa - dev jobs: build: runs-on: windows-2019 env: APP_NAME: RemoteSignWorkerDotNet steps: - name: Code Checkout uses: actions/checkout@v3.5.0 - name: Code Checkout MyOrg/Common.Net uses: actions/checkout@v3.5.0 with: repository: MyOrg/Common.Net token: ${{ secrets.MYORG_COMMONDOTNET_PAT }} # 替换为你的PAT密钥 path: Common.Net ref: master
验证要点
- 确保SSH部署密钥(方案1)或PAT(方案2)确实拥有
MyOrg/Common.Net仓库的读取权限。 - 测试修改后的Workflow,确认Windows Runner能正常拉取私有仓库。
内容的提问来源于stack exchange,提问作者minnow
相关产品推荐
相关产品推荐

