我已经在 DO 中配置了 droplet,nginx 启动并成功运行。我遵循了关于通过 Capistrano 部署到服务器的 DO 指南。我可以在不输入密码的情况下通过 ssh 进入服务器。但是在运行时bundle exec cap production deploy:initial
我收到一个非常奇怪的错误:cap aborted!
NotImplementedError: unsupported key type
�pl+�lI���D�� ���U����X��K\�L�[�\�
�M�\�
�M�A?d��h"sU�Ǐ�2�?h��a 5G͕�E���%!Cg��j�|��tu�yL*�'/9�s۷'
我正在使用 rsa SSH key ,这已与许多(> 10)台服务器无缝协作。我试图删除 ssh_options
参数来自我的 deploy/production.rb
文件。这应该在之前要求服务器密码(我猜?)。但是我遇到了同样的错误,这让我怀疑是其他东西让我绊倒了。
gem 版本:net-ssh (3.2.0)
capistrano (3.6.0)
sshkit (1.11.2)
最佳答案
我相信您偶然发现了 sshkit 中的一个错误。 sshkit 的最新版本具有自定义 SSH key 加载和缓存机制,旨在提高连接性能。
但是,自定义实现似乎并不像它替换的默认 net-ssh 实现那样防弹。具体来说,net-ssh 会默默地忽略它不支持的 key 。 sshkit 自定义 key 加载器不会这样做,因此它会因 unsupported key type
而爆炸。你看到的错误。
如果我的理论是正确的,那么您应该能够通过关闭 sshkit 的自定义 key 加载器并强制使用原始 net-ssh 实现来解决您的问题。您可以通过将以下内容添加到您的 deploy.rb
中来做到这一点。 :
set :ssh_options, known_hosts: Net::SSH::KnownHosts
关于ruby-on-rails - 由于 key 类型不受支持,无法将 Rails 应用部署到 DigitalOcean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38954604/