GitHub将推送到AWS CodeCommit的操作:主机密钥验证失败

问题描述

我正在尝试创建一个GitHub Action来将任何提交推送到AWS CodeCommit存储库。为此,我使用带有composite run steps action方法的单个main.yml文件创建一个GitHub Action的工作流。这是该操作的外观:

name: CI
on:
  push:
    branches: [ master ]
jobs:
  codecommit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: pushes to codecommit
        env:
          CODECOMMIT_URL: ${{ secrets.CODECOMMIT_URL }}
          HOST_KEY: ${{ secrets.HOST_KEY }}
          SSH_CONFIG: ${{ secrets.SSH_CONFIG }}
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
        shell: bash
        run: |
          mkdir .ssh && cd .ssh && echo "$SSH_PRIVATE_KEY" > id_rsa && chmod 600 id_rsa
          echo "$SSH_CONFIG" > config && chmod 600 config
          echo "$HOST_KEY" > known_hosts && chmod 600 known_hosts && cd ..
          git remote add codecommit "$CODECOMMIT_URL"
          git push codecommit master --force

打破这一点:

on:
  push:
    branches: [ master ]

每当将更改推送到master分支...

jobs:
  codecommit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

运行一个名为codecommit的作业,该作业首先检出存储库中的代码并将其提供给运行者的文件系统。

      - name: push to codecommit
        env:
          CODECOMMIT_URL: ${{ secrets.CODECOMMIT_URL }}
          HOST_KEY: ${{ secrets.HOST_KEY }}
          SSH_CONFIG: ${{ secrets.SSH_CONFIG }}
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
        shell: bash

使用一些环境变量push to codecommitCODECOMMIT_URLHOST_KEYSSH_CONFIG运行名为SSH_PRIVATE_KEY的单个步骤。这些是:

CODECOMMIT_URL:CodeCommit存储库的ssh网址。

HOST_KEY:运行ssh-keyscan -t rsa github.com以获取GitHub存储库的主机密钥的结果。

SSH_CONFIG:这是用于git的git配置:

Host git-codecommit.*.amazonaws.com
  User {SSH Username here}
  IdentityFile .ssh/id_rsa
  StrictHostKeyChecking no

SSH_PRIVATE_KEY:位于id_rsa中的私钥。

        run: |
          mkdir .ssh && cd .ssh && echo "$SSH_PRIVATE_KEY" > id_rsa && chmod 600 id_rsa

运行一系列命令,首先创建一个名为.ssh的目录,输入该目录,然后创建一个系统可以访问的文件id_rsa。该文件包含SSH私钥。

echo "$SSH_CONFIG" > config && chmod 600 config

将SSH配置保存到名为config的文件中,并赋予该文件系统访问权限。

echo "$HOST_KEY" > known_hosts && chmod 600 known_hosts && cd ..

将主机密钥保存到名为known_hosts的文件中,授予系统对该文件的访问权限,然后导航回该存储库的根目录。

git remote add codecommit "$CODECOMMIT_URL"
git push codecommit master --force

将CodeCommit URL添加为git的远程,然后尝试推送到该远程。

看起来CodeCommit仍未将GitHub识别为已验证。我从运行此操作得到此响应:

Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我在此配置中缺少什么吗?

解决方法

你不是应该做的事吗

$ ssh-keyscan -H git-codecommit.<region>.amazonaws.com 

...,然后将结果添加到:

~/.ssh/known_hosts   

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...