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

appleboy/ssh-action部署Laravel时git pull报No such device or address错误求助

问题根源

报错和你配置的3个GitHub Secrets无关,错误来自部署目标服务器的Git配置:

  • 服务器上的项目仓库绑定的远程origin为HTTPS协议地址,执行git pull时需要交互输入GitHub账号密码,appleboy/ssh-action建立的是非交互SSH会话,无法输入交互信息就会触发该报错。
  • 你配置的SSH_PRIVATE_KEY仅用于GitHub Actions登录你的部署服务器,不具备服务器端拉取GitHub仓库代码的权限。

解决方案

方案一(推荐):切换远程仓库为SSH协议

  1. 登录部署目标服务器,进入项目目录后执行命令生成SSH密钥对(服务器已有可用SSH密钥可跳过本步):
ssh-keygen -t ed25519 -C "服务器部署密钥"
# 全程按回车使用默认配置即可
  1. 输出公钥内容并完整复制:
cat ~/.ssh/id_ed25519.pub
  1. 打开对应GitHub仓库的设置页,找到**Deploy keys(部署密钥)**选项,粘贴刚才复制的公钥并保存(不需要勾选写入权限)。
  2. 回到服务器项目目录,修改远程仓库地址为SSH协议:
git remote set-url origin git@github.com:<你的GitHub用户名>/<你的仓库名>.git
  1. 服务器上手动执行一次git pull,确认无需输入任何信息即可拉取成功,后续部署就不会再触发该报错。

方案二:保留HTTPS协议配置凭证

如果不想切换SSH协议,可通过配置GitHub个人访问令牌(PAT)实现免交互拉取:

  1. 在GitHub账号中生成具备仓库读取权限的个人访问令牌。
  2. 服务器项目目录执行命令修改远程地址:
git remote set-url origin https://<你的PAT>@github.com/<你的GitHub用户名>/<你的仓库名>.git

额外优化建议

你的部署脚本中php artisan migrate命令在生产环境执行时默认会触发交互确认,非交互环境下会卡住,建议修改为:

php artisan migrate --force

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:39:03