Як конвертувати .ppk ключ у OpenSSH ключ під Linux?


188

Я знаю, що можна конвертувати .ppk під puttygen в Windows, але як це зробити в Linux? Чи можливо це?

Відповіді:


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 keypairs: пошук у кеші

Щоб створити приватний ключ:

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 набагато приємніше, оскільки вам не потрібен приватний ключ для перетворення відкритого ключа + вам не потрібно встановлювати шпаклівку
Tobi

Мені довелося додати цей ключ до свого ./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 прапор імпортується з іншого, ніж у відкритому форматі
  • -f прапор означає прочитане з вхідного файлу

Джерело: допис у блозі на сайті burz.wordpress.com


17
.ppk файли є повноцінними парами клавіш, я не думаю, що команда вище чи повідомлення в блозі стосуються цього.
Пітер Бекер

2
Я думаю, я мав на увазі, що він працює, якщо використовувати кнопку "Зберегти відкритий ключ" puttygen. ssh-keygen не розуміє справжніх .ppk файлів, оскільки їм відсутні ті маркери "BEGIN SSH2 PUBLIC KEY ----". Ви можете знайти відкритий ключ у файлі .ppk між рядками "Public-Lines: .." та "Private-Lines: ..".
jous

1
Це працювало для мене з файлом із відкритим ключем - puttygen, здається, вимагає приватного ключа. це , здається , що все це зробило переставити баз-64 частина в одну лінію
Jasen

2
Здається, це не охоплює приватні ключі, саме тому я хотів би зробити перетворення, у мене вже є десь збережений відкритий ключ ...
Герт ван ден Берг

Так, файли ppk, які я бачив, мали відповідні маркери, і це спрацювало чудово .
tylerl

5

Отримайте приватний ключ:

відкрийте .ppk файл у puttygen:

puttygen ~/.ssh/id_dsa.ppk

експортувати як openssh:

Перетворення → Експорт ключа OpenSSH

Отримайте відкритий ключ:

відкрити, як перед приватним ключем із puttygen, відкритий ключ знаходиться під відкритим ключем для вставки у OpenSSH-файл дозволених_кісів


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 - локальний шлях до місця розміщення приватного та відкритого ключа

1
чудовий. THX для зображення! проте тим часом його, --volume=/path/to/file.ppk:/tmp/id.ppkа неid_dsa.ppk
pHiL
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.