
Я сгенерировал два ключа на 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