我想在将代码推送到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 中。
有人遇到过同样的问题吗?我真的不知道这里发生了什么。
编辑:额外信息:它是一个私有存储库。
这是一个非常晚的答案,但我在尝试将某些东西部署到 droplot 时遇到了同样的问题。我创建了一个 ssh 密钥并遇到了
ssh handshake failed
问题,而且我必须做的就是将公钥添加到我的授权密钥列表中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys