You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions中用web-deploy部署one.com主机遇rsync错误求助

问题:GitHub Actions 部署至one.com主机失败(rsync exit code 255)

我在one.com拥有域名和主机,不想再用Filezilla手动传文件,想通过GitHub Actions实现自动化部署——推代码到仓库后自动构建部署,类似Netlify的流程。这是我第一次配置Action,用了SamKirkland/web-deploy工具,但参考的教程是其他主机商的。

我的主机配置信息:

  • Host: ssh.one-example.com
  • Username: one-example.com
  • Password: 控制面板设置的SSH密码
  • Port:22

我写的yml配置:

on:
  push:
    branches:
      - main
name: Publish Website
jobs:
  web-deploy:
    name: 🚀 Deploy Website Every Commit
    runs-on: ubuntu-latest
    steps:
      - name: 🚚 Get Latest Code
        uses: actions/checkout@v3

      - name: 📂 Sync Files
        uses: SamKirkland/web-deploy@v1
        with:
          target-server: ${{ secrets.ftp_host }}
          remote-user: ${{ secrets.ftp_username }}
          private-ssh-key: ${{ secrets.ftp_password }}
          destination-path: ~/destinationFolder/

尝试过把target-server设为ssh.one-example.com和one-example.com@ssh.one-example.com,但都报错:

Error: Error: The process '/usr/bin/rsync' failed with exit code 255

现在不知道是配置还是主机的问题,求修复指导。


问题分析与修复方案

1. 核心配置错误:SSH认证参数用错

你当前用private-ssh-key字段传递SSH密码,但这个参数是用来填写SSH私钥的,不是密码。SamKirkland/web-deploy使用密码认证时,应该用password参数,而非private-ssh-key。

2. 修正后的yml配置

on:
  push:
    branches:
      - main
name: Publish Website
jobs:
  web-deploy:
    name: 🚀 Deploy Website Every Commit
    runs-on: ubuntu-latest
    steps:
      - name: 🚚 Get Latest Code
        uses: actions/checkout@v3

      - name: 📂 Sync Files
        uses: SamKirkland/web-deploy@v1
        with:
          target-server: ${{ secrets.ftp_host }} # 直接填ssh.one-example.com即可
          remote-user: ${{ secrets.ftp_username }} # 填写one-example.com
          password: ${{ secrets.ftp_password }} # 填写你的SSH密码
          destination-path: ~/destinationFolder/ # 确保主机上存在这个路径
          port: 22 # 显式指定端口,避免默认值冲突

3. 其他必查项

  • 验证SSH连接有效性:先用本地终端测试SSH登录,执行命令:ssh one-example.com@ssh.one-example.com -p 22,输入密码看能否正常登录,排除密码错误或主机禁止SSH的问题。
  • 确认目标路径存在:登录主机后检查~/destinationFolder/是否存在,不存在则手动创建:mkdir ~/destinationFolder。
  • 主机防火墙设置:检查one.com控制面板的防火墙规则,确保22端口允许外部(GitHub Actions服务器)访问。
  • rsync依赖检查:ubuntu-latest runner默认自带rsync,若仍有问题,可在steps中添加安装步骤:
    - name: 📦 Install rsync
      run: sudo apt-get install rsync -y
    

4. 调试建议

测试阶段可临时将secrets值替换为明文(测试完成后改回secrets),这样能在Action日志中看到更具体的错误信息,比如是认证失败还是路径不存在。

内容的提问来源于stack exchange,提问作者Benji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:46:07