Вопрос или проблема
Я сгенерировал пару ключей с помощью ssh-keygen
. Теперь я хочу использовать ту же пару ключей с приложениями на основе PuTTY.
Поскольку я работаю в среде командной строки, я хочу преобразовать ключ в формат .ppk
из этой среды.
Похоже, вы можете использовать puttygen openssh_private_key -o output_filename.ppk
в UNIX-подобных средах. Но версия puttygen
для Windows просто загрузит ключ и предложит использовать графический интерфейс для экспорта ключа.
Режим пакетной обработки для Windows PuTTYgen предполагает, что это в данный момент просто невозможно, по крайней мере с puttygen
. Я бы с радостью принял вариант, который использует другие средства.
Как я могу преобразовать ключ из командной строки?
WinSCP поддерживает конвертацию частных ключей из формата OpenSSH (или ssh.com) в формат PuTTY .ppk
.
Используйте переключатель /keygen
:
winscp.com /keygen mykey.pem /output=mykey.ppk
(Я автор WinSCP)
Или вы можете скомпилировать/запустить Unix командный puttygen
с помощью Cygwin.
Или установить их с помощью WSL:
sudo apt install putty-tools # для ubuntu
Затем, в обоих случаях:
puttygen mykey.pem -O private -o mykey.ppk
Или создайте собственный инструмент на основе кода PuTTY. Он с открытым исходным кодом. Это довольно просто (в основном, это то, что делает WinSCP).
Используйте import_ssh2
, чтобы загрузить .pem
:
ssh2_userkey *import_ssh2(const Filename *filename, int type,
char *passphrase, const char **errmsg_p);
Используйте ppk_save_f
, чтобы сохранить его в формате .ppk
:
bool ppk_save_f(const Filename *filename, ssh2_userkey *key,
const char *passphrase, const ppk_save_parameters *params)
ПРИМЕЧАНИЕ: ОП требует командной строки. Этот ответ использует графическое приложение… Оставлю ответ здесь на случай, если он будет полезен.
Существует, возможно, более простое решение.
-
Скачайте (если у вас его еще нет) приложение генератора ключей PuTTY (PuTTYgen), перейдя сюда или сюда.
-
Откройте PuTTYgen
-
Нажмите “Conversions”, затем нажмите “Import Key”
-
Найдите ваш файл ключа, затем нажмите “Open”.
Теперь вы можете сохранить ваш ключ в формате PPK, нажав кнопку “Save private key”
Вы также можете сохранить публичную версию вашего ключа, нажав кнопку “Save public key”
https://devops.profitbricks.com/tutorials/use-ssh-keys-with-putty-on-windows/
https://kb.site5.com/shell-access-ssh/how-to-convert-ssh-keys-to-ppk-format/
Если вы работаете на Linux или генерируете свой ключ там (или может быть, вы можете?), то вы можете использовать
puttygen -t rsa -C "my home key" -o mykey.ppk
Если у вас еще нет puttygen, то выполните sudo apt install putty-tools
или используйте соответствующую команду в вашей системе для его установки.
В противном случае, если вы на Windows, я не вижу, как вы можете это сделать, кроме как генерировать ключ на другой машине.
Ответ или решение
Конвертация SSH-ключа в формат .ppk на командной строке Windows — это задача, с которой сталкиваются многие ИТ-специалисты. Если вы уже сгенерировали пару ключей с помощью ssh-keygen
и хотите использовать их с приложениями на основе PuTTY, то следующие шаги помогут вам в этом процессе.
Методы конвертации ключей на командной строке Windows
Несмотря на то что puttygen
в Windows не поддерживает командную строку для конвертации ключей напрямую, существуют различные обходные пути, которые позволят вам выполнить эту задачу.
1. Использование WinSCP
WinSCP предоставляет возможность конвертации SSH-ключей в формат .ppk с помощью командной строки:
-
Убедитесь, что WinSCP установлен. Если он еще не установлен, загрузите его с официального сайта WinSCP.
-
Используйте следующую команду:
winscp.com /keygen mykey.pem /output=mykey.ppk
Здесь
mykey.pem
— это ваш исходный SSH-ключ, аmykey.ppk
— имя выходного файла, в который будет сохранен конвертированный ключ.
2. Использование Cygwin
Если вы предпочитаете использовать утилиты Unix, вы можете установить Cygwin и использовать puttygen
:
-
Скачайте и установите Cygwin с официального сайта.
-
Установите
putty-tools
:apt-cyg install putty
-
Конвертируйте ключ с помощью команды:
puttygen mykey.pem -O private -o mykey.ppk
3. Использование Windows Subsystem for Linux (WSL)
Вы также можете использовать WSL для работы с Linux из Windows:
-
Установите WSL, если он еще не установлен. Для этого выполните команду в PowerShell (от имени администратора):
wsl --install
-
Установите
putty-tools
в вашей WSL-дистрибуции (например, Ubuntu):sudo apt update sudo apt install putty-tools
-
Конвертируйте ключ так же, как и в предыдущих случаях:
puttygen mykey.pem -O private -o mykey.ppk
Альтернативные варианты
Если по какой-то причине указанные выше методы не подходят, вы можете рассмотреть возможность создания собственных инструментов на основе открытого кода PuTTY, но это требует более глубоких знаний в программировании. В качестве краткой справки, вы можете использовать функции import_ssh2
и ppk_save_f
из кода PuTTY для выполнения конвертации.
Заключение
Конвертация SSH-ключа в формат .ppk на платформе Windows может быть выполнена с использованием различных подходов, даже если стандартный puttygen
не поддерживает эту функцию через командную строку. WinSCP, Cygwin и WSL предоставляют пользователям эффективные средства для решения этой задачи. Выберите метод, который лучше всего соответствует вашим навыкам и инфраструктуре, и у вас не возникнет трудностей с использованием своих SSH-ключей в приложениях на основе PuTTY.