Почему Meteor Up (MUP) не проходит аутентификацию?
В настоящее время я пытаюсь развернуть проект 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 существует и настроен именно там, где они этого ожидают. К сожалению, я, кажется, в другой ситуации. Я сгенерировал ключ с помощью putty перед настройкой сервера DO и создал дроплет, используя его. После создания файл не существовал. Единственной вещью в каталоге ~/.ssh/ был единственный файл с именем "author_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',
3 ответа
Сообщение об ошибке вы получаете:
Error: All configured authentication methods failed
Означает, что соединение SSH не работает. Таким образом, учетные данные, которые вы используете (жаль, что вы удалили их из конфигурации), не работают. Попробуйте использовать командную строку ssh, используя те же учетные данные, а затем попытайтесь решить эту проблему - как только вы сможете подключиться по ssh к серверу, mup сможет выполнить свою работу.
Вы можете получить больше информации из ssh, указав один или несколько -v
параметры, например:
ssh -v -v my_user@remote.com
и он даст вам информацию о методах аутентификации, которые он пробует, проходя через них. Это поможет вам сузить проблему.
Это старая тема, но для тех, кто пришёл сюда и пытается настроить более новую версию Ubuntu (например, цифровую океанскую каплю Ubuntu 22.04 (LTS) x64), я смог заставить её работать, просто перейдя на Ubuntu 20.04. (ЛТС) х64. Я предполагаю, что агент или конфигурация ssh изменились в новой версии Ubuntu. Надеюсь, это сэкономит кому-то время.
В Ubuntu 22.04 RSA по умолчанию не разрешен в качестве алгоритма ключа SSH. Мне удалось решить проблему, добавив эту строку в/etc/ssh/sshd_config
:
PubkeyAcceptedKeyTypes=+ssh-rsa