我在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)
答案 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