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

执行pm2 deploy development setup时遇权限拒绝问题求助

问题分析与解决办法

首先得说,这个问题的根源一眼就能看出来——你在package.json的pm2部署配置里,错误地指定了公钥文件作为认证密钥!

先看你遇到的错误提示:

Enter passphrase for key '/Users/spongebob/.ssh/dev.pub': Permission denied (publickey,keyboard-interactive). setup paths failed Deploy failed

这里要求输入的是dev.pub的密码,但.pub后缀的是公钥文件,公钥本来就不需要密码,也根本不能用来做本地身份认证(身份认证靠的是本地的私钥,公钥是放在服务器上的)。pm2拿到公钥去尝试认证,自然会触发权限错误,还莫名其妙弹出密码提示。

再看你能正常通过SSH登录的命令:

ssh -o 'IdentityFile /Users/spongebob/.ssh/dev' 'dev@192.168.0.17'

这里你用的是私钥dev(不带.pub),所以能正常登录——这也直接印证了问题所在。

具体修复步骤

打开你的package.json,找到部署配置部分,把key字段的路径从公钥改成私钥:

"deploy": {
  "development": {
    "key": "/Users/spongebob/.ssh/dev",  // 去掉末尾的.dev.pub
    "user": "dev",
    "host": "192.168.0.17",
    "ref": "origin/master",
    "path": "/home/dev/",
    "repo": "git@github.com:MyUsername/blue-mask-api.git",
    "post-deploy": "echo 999999999999",
    "ssh_options": [
      "StrictHostKeyChecking=no",
      "PasswordAuthentication=no"
    ]
  }
}

保存修改后,重新运行pm2 deploy development setup,应该就能正常执行了。

补充说明

你提到已经把密钥添加为GitHub部署密钥,这部分没问题——因为GitHub那边用的是公钥,和本地pm2需要的私钥不冲突,只要本地私钥和GitHub上的公钥配对就行,你之前已经验证过这部分是有效的,所以不用改动这部分配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:09:34