使用 appleboy/ssh-action 进行 SSH 后没有此类文件或目录错误

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

我不知道为什么我的脚本不断给出错误:

name: Node.js Workflow CI/CD

# Trigger the workflow on push and
# pull request events on the master branch
on:
  push:
    branches: ["main"]
  pull_request:
    branches: ["main"]

# Authenticate to the the server via ssh
# and run our deployment script
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Deploy to Server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          port: ${{ secrets.PORT }}
          key: ${{ secrets.SSHKEY }}
          script: "cd root@XXXX:/project && ./.scripts/deploy.sh"

错误是:

======CMD======
cd ***@***:/project && ./.scripts/deploy.sh
======END======
err: bash: line 1: cd: ***@***:/project: No such file or directory
2024/02/07 15:39:*** Process exited with status 1

仅供参考,我的

project
目录是:

project

如果有人可以帮忙,我将不胜感激,非常感谢!

node.js github deployment github-actions vps
1个回答
0
投票

您看到的错误表明您在

cd
script
参数中使用
ssh-action
命令存在误解。您提供的
cd
命令语法似乎是尝试通过 SSH 连接到服务器并一步更改目录,在这种情况下这是不正确的。
ssh-action
已根据您提供的
host
username
port
key
参数建立 SSH 连接。因此,您的
script
应该只包含建立连接后在服务器上执行的命令,而不需要再次指定
root@XXXX

更正脚本

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Deploy to Server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          port: ${{ secrets.PORT }}
          key: ${{ secrets.SSHKEY }}
          script: "cd /project && ./scripts/deploy.sh"

此配置将使用您提供的凭据和密钥通过 SSH 连接到服务器,更改到

/project
目录,然后执行位于该处的
deploy.sh
脚本。

此外,请确保路径

/project
正确且存在于服务器上。如果它是您通过 SSH 连接到的用户主目录的相对路径,则可能不需要前导斜杠。

确保

deploy.sh
脚本具有执行权限。如果需要,您可以在服务器上使用
chmod +x deploy.sh
进行设置。

如果仍然遇到问题,请在

ls
中的
cd
命令之前添加
script
以列出目录并确保您位于服务器上的预期目录结构中。

© www.soinside.com 2019 - 2024. All rights reserved.