Невозможно развернуть приложение Rails в DigitalOcean из-за неподдерживаемого типа ключа

Я настроил дроплет в DO, и nginx успешно запущен. Я следовал руководству по DO при развертывании на сервер через Capistrano. Я могу зайти на сервер без ввода пароля. Но на бегу bundle exec cap production deploy:initial Я получаю очень странную ошибку:

cap aborted! NotImplementedError: unsupported key typeпл + LID���U����X��K\�L�[�\� �M�\� �M�A?d��h"sU�Ǐ�2�?h��a 5G͕�E���%!Cg��j�|��tu�yL*�'/9�s۷'

Я использую rsa SSH-ключ, и это работало со многими (>10) серверами без проблем. Я пытался удалить ssh_options парам от моего deploy/production.rb файл. Это должно запрашивать пароль сервера раньше (я думаю?). Но я получаю ту же ошибку, заставляя меня подозревать, что меня что-то сбивает с толку.

Версии Gem:

net-ssh (3.2.0) capistrano (3.6.0) sshkit (1.11.2)

1 ответ

Я считаю, что вы наткнулись на ошибку в sshkit. Последние версии sshkit имеют собственный механизм загрузки и кэширования ключей SSH, нацеленный на повышение производительности соединения.

Однако кажется, что пользовательская реализация не так пуленепробиваема, как стандартная реализация net-ssh, которую она заменяет. В частности, net-ssh будет молча игнорировать ключи, которые он не поддерживает. Пользовательский загрузчик ключей sshkit не делает этого, поэтому он взрывается unsupported key type ошибка, которую вы видите.

Если моя теория верна, то вы сможете исправить проблему, отключив пользовательский загрузчик ключей sshkit и заставив использовать оригинальную реализацию net-ssh. Вы можете сделать это, добавив следующее к вашему deploy.rb:

set :ssh_options, known_hosts: Net::SSH::KnownHosts
Другие вопросы по тегам