0

我目前正在尝试第一次将 Meteor 项目部署到外部服务器。该服务器由 DigitalOcean 托管,运行 ubuntu 16.04,并设置了 SSH 密钥以实现无密码访问。

我从 MUP 得到的错误是:

[159.203.165.13] - Setup Docker
events.js:165
  throw er; // Unhandled 'error' event
  ^

Error: All configured authentication methods failed
at tryNextAuth (/usr/lib/node_modules/mup/node_modules/nodemiral/node_modules/ssh2/lib/client.js:290:17)
at SSH2Stream.onUSERAUTH_FAILURE (/usr/lib/node_modules/mup/node_modules/nodemiral/node_modules/ssh2/lib/client.js:469:5)
at SSH2Stream.emit (events.js:180:13)
at parsePacket (/usr/lib/node_modules/mup/node_modules/ssh2-streams/lib/ssh.js:3647:10)
at SSH2Stream._transform (/usr/lib/node_modules/mup/node_modules/ssh2-streams/lib/ssh.js:551:13)
at SSH2Stream.Transform._read (_stream_transform.js:185:10)
at SSH2Stream._read (/usr/lib/node_modules/mup/node_modules/ssh2-streams/lib/ssh.js:212:15)
at SSH2Stream.Transform._write (_stream_transform.js:173:12)
at doWrite (_stream_writable.js:410:12)
at writeOrBuffer (_stream_writable.js:396:5)
at SSH2Stream.Writable.write (_stream_writable.js:294:11)
at Socket.ondata (_stream_readable.js:651:20)
at Socket.emit (events.js:180:13)
at addChunk (_stream_readable.js:274:12)
at readableAddChunk (_stream_readable.js:261:11)
at Socket.Readable.push (_stream_readable.js:218:10)

Emitted 'error' event at:
at tryNextAuth (/usr/lib/node_modules/mup/node_modules/nodemiral/node_modules/ssh2/lib/client.js:292:12)
at SSH2Stream.onUSERAUTH_FAILURE (/usr/lib/node_modules/mup/node_modules/nodemiral/node_modules/ssh2/lib/client.js:469:5)
[... lines matching original stack trace ...]
at Socket.Readable.push (_stream_readable.js:218:10)

在这一点上,我根据其他建议尝试了几种涉及 mup 文件的解决方案,例如:

1) 添加密码 - 给出与未发生更改完全相同的错误。

2)根据数字海洋添加我用于对服务器进行身份验证的相同 SSH 密钥 - 说“privateKey 值不包含(有效)私钥”。我已经尝试了用于对服务器进行身份验证的密钥以及我能找到的所有其他密钥,但没有生成一个仅供 Meteor 使用的新密钥。

3) 将两者留空并允许它“尝试” ssh-agent - 假装它不知道 ssh-agent 是什么,并抛出与我使用密码时相同的错误。

我已经查看并遵循以下文章中的相同说明:http: //meteortips.com/deployment-tutorial/digitalocean-part-1/

本文假设只有两种可能的状态。一个是 ssh 密钥尚未使用或设置,因此需要生成它。第二个是 ssh 密钥存在并且被准确地设置在他们期望的位置。不幸的是,我似乎处于不同的境地。在设置 DO 服务器之前,我使用 putty 生成了一个密钥,并使用它创建了 droplet。创建后,该文件不存在。~/.ssh/ 目录中唯一的东西是一个名为“authorized_keys”的文件,它保存着我用来连接服务器的密钥。该文件无法使用,服务器上其他 ssh 密钥位置的任何文件也无法使用。我也尝试将文件直接复制到服务器上,但也无济于事。

在找到解决方案的一些徒劳希望中,我还尝试在 Meteor 构建包和源代码文件夹中运行这些相同的命令。都没有奏效。我应该提一下,尽管这是我仍然可以尝试解决的唯一一篇文章,但我已经尝试了使用 MUP 找到的每一篇文章。

如果有人能以此为我指明正确的方向,这样我就可以停止在黑暗中疯狂地挥舞,我将非常感激。

编辑:根据要求,下面是当前的 mup.js 文件,其中删除了凭据

module.exports = {
  servers: {
one: {
  // TODO: set host address, username, and authentication method
  host: '111.111.111.11',
  username: 'root',
  // ssh-agent: '/home/Meteor/MeteorKey.pem'
  pem: '~/.ssh/id_rsa.pub'
  //  password: 'password1'
  // or neither for authenticate from ssh-agent
 }
},

app: {
// TODO: change app name and path
name: 'app-name',
path: '../',

servers: {
  one: {},
},

buildOptions: {
  serverOnly: true,
},

env: {
  // TODO: Change to your app's url
  // If you are using ssl, it needs to start with https://
  ROOT_URL: 'http://www.app-name.com',
  MONGO_URL: 'mongodb://mongodb/meteor',
  MONGO_OPLOG_URL: 'mongodb://mongodb/local',
},

docker: {
  // change to 'abernix/meteord:base' if your app is using Meteor 1.4 - 1.5
  image: 'abernix/meteord:node-8.4.0-base',
},

// Show progress bar while uploading bundle to server
// You might need to disable it on CI servers
enableUploadProgressBar: true
},

mongo: {
 version: '3.4.1',
 servers: {
   one: {}
 }
},

// (Optional)
// Use the proxy to setup ssl or to route requests to the correct
// app when there are several apps

// proxy: {
//   domains: 'mywebsite.com,www.mywebsite.com',
4

1 回答 1

0

您收到的错误消息:

Error: All configured authentication methods failed

表示 SSH 连接失败。因此,您使用的凭据(很遗憾您从配置中删除了它们)不起作用。尝试使用使用这些相同凭据的命令行 ssh,然后排除故障 - 一旦您可以 ssh 进入服务器,那么 mup 应该能够完成它的工作。

您可以通过指定一个或多个参数从 ssh 中获取更多信息-v,例如:

ssh -v -v my_user@remote.com

它会在通过它们时为您提供有关它正在尝试的身份验证方法的信息。这将帮助您缩小问题的范围。

于 2018-04-12T21:28:21.277 回答