【问题标题】:Github actions permission denied (publickey)Github 操作权限被拒绝(公钥)
【发布时间】:2022-02-17 21:18:34
【问题描述】:

我在尝试启动 Github 操作工作流程时遇到了困难。 Flutter 项目有一个自定义包的依赖。我在 Github 存储库中有这个自定义包。这是我在 pubspec.yaml 中设置此依赖项的方式:

xxxx_package:
git:
  url: git@github.com:USER_NAME/xxxx_package.git
  ref: develop

如果我启动 flutter pub get 命令,它会成功结束,我可以毫无问题地构建和执行应用程序。

但是当我向 Github 发送推送并启动工作流时,该过程结束并出现以下错误:

Running "flutter pub get" in Project-Flutter...            
Git error. Command: `git clone --mirror git@github.com:xxx/xxxx_package.git /home/runner/.pub-cache/git/cache/xxxx_package-123456789`
stdout: 
stderr: Cloning into bare repository '/home/runner/.pub-cache/git/cache/xxxx_package-123456789'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

这是我的操作工作流文件:

name: Check merge

on:
  push:
    branches: [ main, develop ]

  pull_request:
    branches: [main, develop]
    

  workflow_dispatch:

jobs:
  build:
    name: flutter environment
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v2
        with:
          distribution: 'zulu'
          java-version: '11'
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '2.8.1'
      - name: Install dependencies
        run: flutter pub get
      - run: flutter format --set-exit-if-changed .
      - run: flutter analyze .
      - run: flutter test

我已配置自定义包存储库以使用 shh。

2022 年 2 月 17 日更新

我尝试了@GuiFalourd 的建议,但没有奏效。

我已经向两个仓库(主项目和私人仓库)添加了两个秘密(两者相同)。

  • KNOWN_HOSTS
  • SSH_PRIVATE_KEY -> 这是内容 -----开始 RSA 私钥----- ssh-ed25519 "SSH_KEY" -----结束 RSA 私钥-----

但这是输出:

IO  : Finished git. Exit code 128.
| Nothing output on stdout.
| stderr:
| | Cloning into bare repository '/home/runner/.pub-cache/git/cache/xxxx_package-363daa26604baf2e3bfeae08af7d9c7050760631'...
| | Warning: Permanently added the ECDSA host key for IP address 'x.x.x.x' to the list of known hosts.
| | Load key "/home/runner/.ssh/id_rsa": invalid format
| | git@github.com: Permission denied (publickey).
| | fatal: Could not read from remote repository.
| | 
| | Please make sure you have the correct access rights
| | and the repository exists.

【问题讨论】:

标签: flutter github-actions


【解决方案1】:

嗯,我发现了问题所在。 @GuiFalourd 让我以正确的方式。 在秘密值中(在 github repo 页面上,转到 settings -> secrets -> actions -> New repository secret):

  • SSH_PRIVATE_KEY:在开始时,我使用命令pbcopy < ~/.ssh/id_rsa.pub 来获取ssh 公钥。这是错误的。这个秘密需要 ssh 私钥。正确的命令是pbcopy < ~/.ssh/id_rsa
  • KNOWN_HOSTS:启动ssh-keyscan github.com 命令后,复制属于github.com ssh-rsa [KEY] 的行很重要

注意:此机密必须存在于所有应用依赖包存储库中。

我在这里给你工作流 yaml 文件的最终版本:

名称:检查合并

on:
  push:
    branches: [ master, develop ]
    paths:
      - "**.dart"

  pull_request:
    branches: [master, develop]
    paths:
      - "**.dart"

  workflow_dispatch:

jobs:
  build:
    name: flutter environment
    runs-on: ubuntu-latest
    steps:
      - uses: shimataro/ssh-key-action@v2
        with:
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          name: id_rsa
          known_hosts: ${{ secrets.KNOWN_HOSTS }}
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v2
        with:
          distribution: 'zulu'
          java-version: '11'
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '2.8.1'
      - name: Install dependencies
        run: flutter pub get
      - run: flutter test

【讨论】:

    猜你喜欢
    • 2012-01-18
    • 2012-04-25
    • 1970-01-01
    • 2021-11-11
    • 2018-11-06
    • 2011-11-25
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多