Использование закрытого ключа PuTTY из Windows в Linux

Использование закрытого ключа PuTTY из Windows в Linux

Я сгенерировал два ключа на PuTTY: публичный и приватный. Используя это ПО на Windows, я могу подключиться к серверу как обычно.

Затем я попытался скопировать эти файлы на свою машину с Ubuntu (21.04) и вошел в систему, загрузив закрытый ключ (откройте Putty, введите user@hostnameи загрузите закрытый ключ в SSH>Auth), но подключение не удалось, поскольку сервер отклонил сообщение об ошибке:

Unable to load key file '~/private_key.ppk' (PuTTY key format too new). 

И появляется всплывающее окно с надписью:

No supported authentication methods available (server sent: publickey)

Итак, как следует из первой ошибки, после преобразования закрытого ключа в формат OpenSH PEM с помощью PuTTYgen и последующей загрузки этого файла в SSH/Auth сообщение «No supported» остается до сих пор:

Unable to use key file '~/private_key_openssh' (OpenSSH SSH-2 private key (old PEM format) ).

Есть ли способ использовать эти ключи в Ubuntu? Может быть, через openssh?

Некоторая информация, которая будет полезна:

  • Новая установленная версия Ubuntu
  • Шпатлевка 0,74

Вывод при попытке сssh -i ~/.ssh/private_key.ppk user@hostname

Загрузите ключ "~/.ssh/private_key.ppk": неверный формат user@hostname: Доступ запрещен (publickey).

решение1

Ответы/комментарии Адониса и Томаса в основном правильные, но не хватает некоторых деталей, которые мне нужны, чтобы это работало на практике. Поскольку у меня недостаточно репутации, чтобы комментировать, я добавлю детали через этот ответ.

Экспортируйте Putty PPK в формат OpenSSH.

Для этого откройте PuttyGen, загрузите закрытый ключ, а затем перейдите в меню «Конверсии» и выберите «Экспорт ключа OpenSSH».

Использование ключа OpenSSH в Ubuntu (или производных)

Если вы используете его для SSH напрямую, вы можете использовать его, как упомянул Адонис. Но что, если он вам нужен косвенно, например, для использования с системами управления исходным кодом?

Скопируйте его в папку ~/.ssh на Linux. Вам может потребоваться создать эту папку, если вы ранее не использовали SSH на вашем Linux-компьютере. Когда вы создаете каталог .ssh, вам нужно, chmod 0700 ~/.sshчтобы инструмент ssh считал, что каталог действительно принадлежит вам.

Если вы скопировали файл ключа из Windows, теперь откройте терминал в папке ~/.ssh и запустите chmod 400 [private key file name]. Это необходимо, поскольку разрешения по умолчанию (при копировании из Windows) будут 770; утилита SSH сообщит вам, что это слишком разрешительно, и что она проигнорирует ключ. К сожалению, она не говорит вам напрямую, как исправить проблемы, но разрешения 400, которые означают «доступно для чтения мне, недоступно никому другому», исправят проблему.

Теперь в терминале запустите eval $(ssh-agent). Это откроет ваш локальный агент SSH и позволит вам добавлять ключи, которые могут быть получены другими программами, такими как система управления исходным кодом.

Наконец, запустите ssh-add ~/.ssh/[private file key name]. Если вы не забыли установить разрешения, это должно работать, и вы сможете использовать git/hg/etc. с вашим ключом SSH.

решение2

Соединение установлено!

Как предложил Томас Уорд, загрузка файла private_key в PuTTYgen на Windows и копирование открытого ключа в authorized-keysфайл сработали в качестве первого шага.

Более того, экспортируйте файл private_key в формате openssh (первый вариант) в файл private_OpenSSH, а затем переместите его в каталог ~/.ssh, чтобы изменить разрешения с помощью:

chmod 400 private_OpenSSH

Позволил мне наконец связаться с:

ssh -i ~/private_OpenSSH user@hostname

Связанный контент