ruby-on-rails - 由于 key 类型不受支持,无法将 Rails 应用部署到 DigitalOcean

标签 ruby-on-rails ssh capistrano digital-ocean capistrano3

我已经在 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/

相关文章:

ruby-on-rails - 通过 Heroku 上的 ruby​​ 守护进程 worker 拒绝 Redis 连接

javascript - 当用户在选择下拉列表中选择其他标题时显示输入字段

linux - Windows 上的 GUI 在联网的 Linux 机器上运行 Linux 脚本?

linux - 在 Debian 上使用 iptables 启用特定访问

找不到 Symfony2 Capifony app_dev.php

javascript - 在 rails 中使用 ajax 请求更新数据库

ruby-on-rails - Facebook 应用程序与 Rails 上的 iframe

github - 无法访问私有(private) github 存储库(我有公钥和私钥)

git - 我能看到最后部署在 Capistrano 的哪个分支吗

ruby-on-rails - Rails 应用程序在遇到重负载时不断崩溃