github 操作:通过 SSH 连接到 Droplet 并运行代码

问题描述 投票:0回答:1

我想在将代码推送到github时通过github actions自动部署github项目。我的 yaml 文件如下所示:

name: push-and-deploy-to-server

on:
  push:
    branches: [ main ]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          port: 22
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          source: "."
          target: "."
      - uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          port: 22
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            npm install
            pm2 restart index.js

我有一台带有 SSH 密钥对的服务器。公钥已添加到服务器的authorized_keys中,我可以通过终端通过SSH连接到服务器。

当我将代码推送到 github 存储库时,该操作就会运行。我收到以下错误:

drone-scp 错误:ssh:握手失败:ssh:无法进行身份验证,已尝试方法 [无公钥],不存在支持的方法

奇怪的是:出现此错误后,我无法再通过 SSH 连接到我的服务器,即使通过我的控制台我也收到“权限被拒绝(公钥)”的消息。所以在运行 github 操作之前,一切正常,之后就失败了。

服务器的 IP 地址是 SSH_HOST,我用于 SSH 进入服务器的用户名设置在 SSH_USERNAME 中,私钥(与我在本地笔记本电脑上使用的 ssh 进入服务器相同)设置在 SSH_PRIVATE_KEY 中。

有人遇到过同样的问题吗?我真的不知道这里发生了什么。

编辑:额外信息:它是一个私有存储库。

ssh github-actions digital-ocean
1个回答
0
投票

这是一个非常晚的答案,但我在尝试将某些东西部署到 droplot 时遇到了同样的问题。我创建了一个 ssh 密钥并遇到了

ssh handshake failed
问题,而且我必须做的就是将公钥添加到我的授权密钥列表中:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
© www.soinside.com 2019 - 2024. All rights reserved.