我目前正在尝试首次将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密钥,并且正好设置在他们期望的位置。不幸的是,我似乎处于不同的境地。我在设置D.O服务器之前使用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',
答案 0 :(得分:0)
您收到的错误消息:
Error: All configured authentication methods failed
表示SSH连接失败。所以你使用的凭证(可惜你从配置中删除它们)不起作用。尝试使用命令行ssh使用这些相同的凭据,然后解决问题 - 一旦你可以ssh到服务器,那么mup应该能够做到这一点。
您可以通过指定一个或多个-v
参数从ssh中获取更多信息,例如:
ssh -v -v my_user@remote.com
它将为您提供有关它正在尝试的身份验证方法的信息。这将有助于您缩小问题范围。