首页 > 解决方案 > Net-SSH/Capistrano 问题:“无法解析 PKey:没有起始行”

问题描述

多年来,我一直在使用 Capistrano 成功部署我的 Rails 3.2.13 应用程序。ArgumentError: Could not parse PKey: no start line但是就在今天,我在连接到服务器时遇到了可怕的事情。

从其他帖子中,我了解到这实际上是net-ssh宝石的一个问题,Capistrano 使用它来建立连接。显然,较旧版本net-ssh的 OpenSSH 与较新版本的 OpenSSH 创建的密钥文件不兼容。(例如,请参见此处此处。)

(a) 我仍然可以从命令行通过 SSH 连接到我的服务器这一事实,以及 (b) 以下小irb会话支持这一诊断:

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。

有没有办法恢复到私钥文件的旧/兼容版本?或者其他一些解决方案?

标签: ruby-on-rails-3sshcapistranoopensshnet-ssh

解决方案


通过运行解决它:

ssh-keygen -p -m PEM

然后按照提示“重置”我的私钥的密码。

添加该-m PEM选项后,我恢复了~/.ssh/id_rsa与旧版本的net-ssh.


推荐阅读