首页 > 解决方案 > PM2 部署权限被拒绝

问题描述

当我运行时,pm2 deploy development setup我收到以下错误。这很奇怪,因为此密钥没有设置密码。

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

  setup paths failed

Deploy failed

我创建了一个没有密码的密钥对,并将其传输到我的开发机器,如下所示:

ssh-copy-id -i ~/.ssh/virtualbox_dev -o "IdentityFile /Users/spongebob/.ssh/dev" -f dev@192.168.0.17

我可以在没有密码的情况下很好地登录 SSH:

ssh -o 'IdentityFile /Users/spongebob/.ssh/dev' 'dev@192.168.0.17'
Last login: Sun May 27 12:39:57 2018 from 192.168.0.11

我已将此密钥作为部署密钥添加到 Github,因为这是一个私有仓库(并且还添加了virtualbox_dev密钥以防万一)。并测试它是否有效......

Hi MyUsername/blue-mask-api! You've successfully authenticated, but GitHub does not provideshell access.

这是我的部署配置(我有这个package.json):

"deploy": {
    "development": {
      "key": "/Users/spongebob/.ssh/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"
      ]
    }

这很令人困惑,因为它要求输入密码并且没有一组密码。当我把它留空时,我仍然会被拒绝。

标签: node.jsgitgithubsshpm2

解决方案


Enter passphrase for key '/Users/spongebob/.ssh/dev.pub':

看来您正在尝试使用错误的密钥文件。带有“.pub”扩展名的文件是公钥文件。没有“.pub”扩展名的相应文件是私钥文件。当您运行 ssh客户端连接到远程服务器时,您必须向 ssh 客户端提供私钥文件。公钥文件的内容存储在服务器(本例中为 github)上,ssh 服务器软件使用它来确认可以接受此密钥进行身份验证。

你应该有一个与公共文件同名的私钥文件,除了没有“.pub”扩展名:

"development": {
  "key": "/Users/spongebob/.ssh/dev",
                                ^^^--note no .pub

推荐阅读