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

