多年来,我一直在使用 Capistrano 成功部署我的 Rails 3.2.13 应用程序。但就在今天,我遇到了可怕的ArgumentError: Could not parse PKey: no start line
连接到服务器时。
我从其他帖子中了解到,这实际上是 net-ssh
的问题。 gem ,Capistrano 使用它来建立连接。显然是 net-ssh
的旧版本与较新版本的 OpenSSH 创建的 key 文件不兼容。 (例如,参见 here 和 here。)
这个诊断得到以下支持:(a)我仍然可以从命令行通过 SSH 连接到我的服务器,以及(b)下面的小 irb
session :
irb(main):006:0> require 'net/ssh'
=> true
irb(main):007:0> Net::SSH::KeyFactory.load_private_key('~/.ssh/id_rsa')
ArgumentError: Could not parse PKey: no start line
我想我最近在更改密码时更新了我的私钥文件,现在它与我的版本不兼容
net-ssh
(v2.7.0)。我无法升级
net-ssh
因为我坚持使用 Ruby 1.9.3。有没有办法恢复到旧的/兼容版本的私钥文件?或者其他一些解决方案?
最佳答案
通过运行解决它:
ssh-keygen -p -m PEM
然后按照提示“重置”我的私钥的密码。
添加
-m PEM
选项给了我旧式 ~/.ssh/id_rsa
与旧版本 net-ssh
兼容所需的文件.
关于ruby-on-rails-3 - Net-SSH/Capistrano 问题 : "Could not parse PKey: no start line",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54150803/