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
相关产品推荐
相关产品推荐

