Я пытаюсь выполнить пару команд на удаленном сервере и в качестве метода аутентификации использую открытые ключи.
Открытые ключи правильно настроены на сервере, и я могу подключиться к нему без запроса пароля системой, например:
ssh [email protected]
Итак, вот что я делаю в своем коде:
Net::SSH.start(host, user, :keys=>["~/.ssh/id_rsa","~/.ssh/id_rsa.pub"]) do |ssh|
ssh.exec "service nginx reload"
end
На локальной машине все работает нормально, на рабочем сервере выдает ошибку.
Net::SSH::AuthenticationFailed: Authentication failed for user [email protected]
Я немного погуглил и уже пытался вернуться к net_ssh 2.7.0, но безуспешно, та же проблема. Я также попытался заменить относительный путь на абсолютный, в моем случае /root/.ssh/... Я попытался добавить параметр
:auth_methods => ['publickey']
все равно не повезло.
Я также уверен, что ключи находятся на правильных путях.
ИЗМЕНИТЬ 1
Стоит отметить, что это отлично работает при запуске в рабочей консоли рельсов.
ИЗМЕНИТЬ 2
Симптомы здесь аналогичны симптомам в этом вопросе: Net::SSH работает из производственной консоли rails, AuthenticationFailed из производственного веб-приложения, за исключением того, что мое приложение запускается от root, и из-за этого не должно быть проблем с разрешениями.
ИЗМЕНИТЬ 3
Я временно вернулся к аутентификации по паролю, которая отлично работает, но вместо этого я бы хотел использовать аутентификацию по ключу.
Любая помощь по этому вопросу очень ценится.