Как преобразовать ключ .ppk в ключ OpenSSH под Linux?

188

Я знаю, что можно конвертировать .ppk под puttygen в Windows, но как это сделать в Linux? Это возможно ?

marioosh
источник

Ответы:

275

Сделай это с Putty.

  • Linux: с вашим менеджером пакетов установите PuTTY (или более минимальные инструменты PuTTY):

    • Ubuntu sudo apt-get install putty-tools
    • Debian-подобных apt-get install putty-tools
    • RPM на основе yum install putty
    • Gentoo emerge putty
    • Archlinux sudo pacman -S putty
    • и т.п.
  • OS X: установите Homebrew , затем запуститеbrew install putty

Поместите ваши ключи в какую-нибудь директорию, например, в вашу домашнюю папку. Теперь преобразуйте ключи PPK в пары ключей SSH: поиск в кэше

Чтобы сгенерировать закрытый ключ:

cd ~
puttygen id_dsa.ppk -O private-openssh -o id_dsa

и для генерации открытого ключа:

puttygen id_dsa.ppk -O public-openssh -o id_dsa.pub

Переместите эти ключи в ~/.sshи убедитесь, что для вашего личного ключа установлены права доступа:

mkdir -p ~/.ssh
mv -i ~/id_dsa* ~/.ssh
chmod 600 ~/.ssh/id_dsa
chmod 666 ~/.ssh/id_dsa.pub

Если вы уже пытались выполнить операцию « git clone », вам может потребоваться сделать это также

chmod 666 ~/.ssh/known_hosts
Стэнли Уильямс
источник
привет, у меня уже есть .pub, тогда нужно снова создать открытый ключ
Amit Bera
1
Если вы пришли сюда в поисках того, как это сделать в Windows, запустите «puttygen yourkey.ppk», а затем в меню «Преобразования» выберите «Экспорт ключа OpenSSH», чтобы получить закрытый ключ.
Райан Шиллингтон
1
решение от @jous намного приятнее, так как вам не нужен закрытый ключ для преобразования открытого ключа + вам не нужно устанавливать putty
Тоби
Мне пришлось добавить этот ключ в мой ./ssh/configфайл Host mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes
vladkras
Некоторые форматы эллиптических кривых (ECDS и т. Д.) Пока доступны только в бета-инструментах.
Даниэль У.
39
ssh-keygen -i -f id_dsa_1024_a.pub > id_dsa_1024_a_openssh.pub
  • -i флаг импортируется из формата, отличного от openssh
  • -f флаг означает чтение из входного файла

Источник: пост в блоге на burnz.wordpress.com

jous
источник
17
Файлы .ppk - это полные пары ключей, я не думаю, что приведенная выше команда или сообщение в блоге применимы к этому.
Питер Беккер
2
Я думаю, я имел в виду, что это работает, если вы используете кнопку "Сохранить открытый ключ" в puttygen. ssh-keygen не понимает настоящие файлы .ppk, поскольку в них отсутствуют маркеры «---- BEGIN SSH2 PUBLIC KEY ----». Вы можете найти открытый ключ в файле .ppk между строками «Public-Lines: ..» и «Private-Lines: ..».
jous
1
Это сработало для меня с файлом с открытым ключом - похоже, для puttygen требуется закрытый ключ. похоже, все, что он сделал, это переставил часть base-64 в одну строку
Jasen
2
Кажется, это не распространяется на закрытые ключи, поэтому я хотел бы выполнить преобразование, у меня уже есть открытый ключ, сохраненный где-то ...
Герт ван ден Берг
Да, у файлов ppk, которые я видел, были соответствующие маркеры, и это работало просто отлично .
Тайлер
5

Получить закрытый ключ:

Откройте файл .ppk в puttygen:

puttygen ~/.ssh/id_dsa.ppk

экспортировать как openssh:

Конверсии → Экспорт ключа OpenSSH

Получить открытый ключ:

откройте как и ранее закрытый ключ с помощью puttygen, открытый ключ находится под открытым ключом для вставки в файл авторизованного OpenSSH_keys

Бар Horing
источник
4

Я подготовил контейнер Docker, чтобы сделать жизнь проще:

docker run --rm \
           --volume=/path/to/file.ppk:/tmp/id_dsa.ppk \
           --volume=/path/to/output:/tmp/out/ \
           czerasz/putty-tools

Где:

  • /path/to/file.ppk - локальный путь к вашему файлу ppk
  • /path/to/output - локальный путь к месту, где должен быть размещен закрытый и открытый ключ
czerasz
источник
1
здорово. Спасибо за изображение! однако пока что его --volume=/path/to/file.ppk:/tmp/id.ppkи нетid_dsa.ppk
pHiL