Ruby Net::SSH.start() не работает из-за проблем с аутентификацией, но используемый ключ работает нормально при подключении за пределами Ruby

Я пытаюсь подключиться к машине по ssh в рамках теста Ruby и запустить на машине команду. Для этого я использую библиотеку Ruby Net:SSH. Простая версия сценария, который я использую, выглядит так:

Это не работает:

Когда я запускаю ssh root@$IP в своей команде линия, она работает успешно, и я могу без проблем подключиться к машине. Кроме того, когда я использую исполнитель командной строки Ruby, заключая команду в обратные кавычки, это тоже работает. Это заставило меня подумать, что это проблема конфигурации моего экземпляра Net:SSH.

Сначала я проверил файл /var/log/auth.log на своем компьютере, и в нем была следующая строка: 19 августа 15:50:44 a$IP sshd[3385268]: userauth_pubkey: тип ключа ssh-rsa отсутствует в PubkeyAcceptedAlgorithms [preauth] кроме того, моя локальная конфигурация ssh содержит следующее:

и вход в систему не выполняется, когда эта строка удалена. Судя по всему, мне нужно было использовать ssh-dss в качестве ключа. Я попытался переключить конфигурацию Net:SSH.start на следующую:

но это не удалось с той же ошибкой аутентификации, что и выше.

require 'net/ssh'

Net::SSH.start($IP, $USER, verbose: :debug) do |ssh|
  puts ssh.exec!("hostname")
end
ruby/gems/3.2.0/gems/net-ssh-7.2.3/lib/net/ssh.rb:275:in `start': Authentication failed for user root@$IP (Net::SSH::AuthenticationFailed)
Host *
    HostKeyAlgorithms +ssh-dss
Net::SSH.start($IP, $USER, host_key: ["ssh-dss"], append_all_supported_algorithms: true, non_interactive: true, verbose: :debug)
Никандр
Вопрос задан25 марта 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.