由于不支持的密钥类型,无法将Rails应用程序部署到DigitalOcean

时间:2016-08-15 11:54:19

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

我在DO中配置了Droplet,nginx启动并成功运行。我在DO上通过Capistrano部署到服务器的指南。我可以在不输入密码的情况下进入服务器。但在运行bundle exec cap production deploy:initial时,我收到了一个非常奇怪的错误:

cap aborted! NotImplementedError: unsupported key type PL +盖子���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 param。这应该在之前询问服务器密码(我猜?)。但是我得到了同样的错误,导致我怀疑其他东西正在绊倒我。

宝石版本:

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

1 个答案:

答案 0 :(得分: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