Проблема с Net-SSH/Capistrano: не удалось разобрать PKey: нет стартовой строки

В течение многих лет я успешно развертывал свое приложение Rails 3.2.13 с помощью Capistrano. Но только сегодня я столкнулся с ужасным ArgumentError: Could not parse PKey: no start line при подключении к серверу.

Из других постов я понял, что на самом деле это проблема с драгоценным камнем net-ssh, который Capistrano использует для установления соединения. По-видимому, более старые версии net-ssh несовместимы с файлами ключей, созданными более поздними версиями OpenSSH. (См. здесь и здесь например.)

Этот диагноз подтверждается (а) тем фактом, что я все еще могу подключиться к своему серверу по SSH из командной строки, и (б) следующим небольшим сеансом 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.

Есть ли способ вернуться к старой/совместимой версии файла закрытого ключа? Или какое-то другое решение, возможно?


person Jonathan    schedule 11.01.2019    source источник


Ответы (1)


Решил это, запустив:

ssh-keygen -p -m PEM

а затем, следуя подсказкам, «сбросить» пароль для моего закрытого ключа.

Добавление параметра -m PEM вернуло мне файл ~/.ssh/id_rsa в старом стиле, необходимый мне для совместимости с моей старой версией net-ssh.

person Jonathan    schedule 11.01.2019
comment
Огромное спасибо. Тоже застрял на рубине 1.9.3. - person Andreas Gnyp; 15.03.2021