Як встановити приватний ключ SSH, згенерований PuTTYgen?


50

Я налаштував свій сервер Linux для прийому з'єднань з домашнього ПК, додавши до authorized_keysфайлу відкритий ключ, сформований PuTTYgen .

Зараз я намагаюся підключитися до тієї ж машини, але цього разу з іншої машини Ubuntu. Мені доводиться використовувати той самий приватний ключ (з дивної причини, не питайте ..), і я не зовсім розумію, як його встановити на своєму клієнтові Ubuntu.

Чи потрібно конвертувати його в якийсь інший формат?

Відповіді:


25

Я не впевнений, чи буде ваш приватний ключ працювати в ubuntu, але його варто зробити. просто скопіюйте ключі, щоб /home/yourName/.ssh/приватний ключ назвав як id_rsa, а відкритий - як id_rsa.pub.

Якщо це не працює, ви можете створити свою власну пару ключів ssh, використовуючи ssh-keygenта скопіювавши новий відкритий ключ на сервер, і ssh наступним чином

ssh -i ~/.ssh/id_rsa_ubuntu.pub <hostName>

Я не грав з цим, але чую, що ssh-агент також може використовуватися для управління ssh-ключами.


3
Це дійсно працює в ubuntu. Однак переконайтеся, що не переписуйте наявний ключ id_rsa, якщо у вас його вже є (скопіювавши новий ключ зверху), якщо ви не знаєте, що не використовуєте старий.
Девід Онелл

5
У цій відповіді повністю бракує інформації про те, як отримати id_rsaфайл (перетворивши ключ у PuTTYgen)
Мартін Прикрил

38

За збігом обставин я просто повинен був це зробити. Вам потрібно конвертувати ключі у формат OpenSSH. Команда для цього:

ssh-keygen -i -f puttygen_key > openssh_key

тоді ви можете скопіювати вміст openssh_keyу так .ssh/authorized_keysсамо, як у звичайний ключ SSH.

-iВаріантом є той , який говорить , ssh-keygenщоб зробити перетворення. -fВаріант каже йому , де знайти ключ для перетворення.

Це працює для незашифрованих ключів. Публічний ключ незашифрований, але приватний, ймовірно, зашифрований. Я не впевнений, чи є спосіб розшифрувати приватний ключ, перетворити його і потім перешифрувати. Можливо, буде легше використовувати нові клавіші, як підказує інша відповідь (і я рекомендую використовувати, ssh-agentхоча це ортогонально для поточного випуску).


1
Ця відповідь вирішує мою проблему. Мені довелося перетворити ключ. Спасибі
leticia

1
Це вирішує лише частину проблеми шляхом перетворення відкритого ключа. Я використовував відповідь @ user18617 для перетворення приватного ключа.
ᴠɪɴᴄᴇɴᴛ


@ ÉdouardLopez puttygen_keyмає бути вашим відкритим ключем, а не приватним ключем (* .ppk).
ендоліт

28

Ендрю Стейсі пояснив, як перетворити ключі у формат OpenSSH в Linux.

Якщо ви хочете зробити те ж саме в Windows, виконайте наступні дії:

  1. Запустіть PuTTYGen.
  2. Клацніть на "Завантажити".
  3. Виберіть свій приватний ключ та введіть пароль.
  4. У меню "Конверсії" виберіть "Експорт ключа OpenSSH".
  5. Виберіть ім'я файлу призначення.

1
Я просто хотів сказати, що це працювало для мене на моїй Mac OS X, хоча я знаю, що це розділ Ubuntu. Я перетворив свій створений приватний ключ в Windows, як описано вище, а потім скопіював його в mac до ~ / .ssh / id_rsa. chmod id_rsa 600, щоб Mac не скаржився на це.
Річард

24

Як повторно використовувати пари клавіш Putty в Ubuntu як ключі OpenSSH:

apt-get install putty-tools #Install Putty tools in Linux
cd /my-putty-keys
puttygen mykey-sec.ppk ‐O private‐openssh ‐o my‐openssh‐key.sec
ssh-keygen -i -f mykey-pub.ppk > my-openssh-key.pub

Оскільки мета кроку 4 - додати ваш відкритий ключ до * ~. / Ssh / autori_keys *, ви можете використовувати свій секретний ключ Putty таким чином, а не робити 4 як проміжний крок:

puttygen ‐L mykey-sec.ppk >> $HOME/.ssh/authorized_keys

1
про крок 4: якщо ім'я приватного ключа було mykey-sec.ppk, ім'я вихідного файлу в цьому випадку зазвичай було б mykey-sec.pub.
Kinjal Dixit

2
Іменування відкритого ключа (імовірно, у форматі RFC 4716) mykey-pub.ppkє досить заплутаним, оскільки .ppkфайл має зовсім інший формат і використовується для пар ключів (не лише відкритого ключа).
Мартін Прикрил

Ця остання лінія puttygen працювала для мене ідеально після встановлення putty-tools на debian 9. Інші рядки та відповіді тут не працювали.
Тім

Дивно я отримував, puttygen: unknown output type `private‐openssh'і puttygen: cannot handle more than one input fileтому я скопіював точні символи з вихідного коду і перейменував свій відкритий ключ на щось інше цілком
CPHPython

якщо ви намагаєтеся запустити команди в цій відповіді і отримати "puttygen: не вдається обробити більше одного вхідного файлу", це, мабуть, тому, що символ тире в "private-openssh" не вставляється як фактичний тире ASCII тому puttygen не визнає цього. Натомість введіть слово самостійно, і воно повинно працювати.
Метт Стайлз

9

PuTTY / PuTTYgen використовує власний фірмовий формат пари ключів. Він не буде працювати в Linux, де переважає формат ключів OpenSSH.

  • У PuTTYgen ви можете безпосередньо побачити (і скопіювати + вставити) відкритий ключ у форматі, використовуваному authorized_keysфайлом OpenSSH .

  • Ви можете скористатися кнопкою Зберегти відкритий ключ, щоб зберегти відкритий ключ у .pubформаті (RFC 4716). У Linux файл зазвичай називається id_rsa.pub(або id_dsa.pub). Але це, як правило, не потрібно.

  • Використовуйте перетворення> Експорт ключа OpenSSH для експорту приватного ключа у формат OpenSSH. У Linux файл зазвичай називається id_rsa(або id_dsa) і зберігається в .sshпапці.

Дивіться офіційне користування PuTTYgen, генератором ключів PuTTY .

Ви також можете використовувати версію PuTTYgen для Linux для перетворення. Версія Linux є командним рядком, всупереч версії Windows.

puttygen mykey.ppk ‐O private‐openssh ‐o id_rsa

Дивіться Linux puttygenсторінку людини .


2

Я знайшов ще одне чітке рішення.

Після puttygenстворення ключа перейдіть до меню " Головне" - "Конверсія" та натисніть кнопку " Експорт"

Вміст файлу розпочнеться і закінчиться

-----BEGIN RSA PRIVATE KEY----- 

-----END RSA PRIVATE KEY-----
  • для суперкористувача розмістіть цей файл ключа в /root/.ssh/якості id_rsaабоid_dsa

  • для іншого користувача Скопіюйте цей ключ-ключ у /home/user/.ssh/як id_rsaабоid_dsa

Примітка :

  1. Не потрібно редагувати authorized_keys.
  2. Я використовую amazon linux
  3. Дозвіл на файл 0600

1

* * Будьте уважні і переконайтеся, що у вас є доступ консолі до коробки, тому що якщо ви не зробите це правильно, ви не зможете знову запустити скриньку, поки не виправите це з консолі.

Процес набагато простіше, ніж ви думаєте. Знову завантажте пара, відкриту / приватний ключ, яку ви створили в puttygen. У puttygen ви помітите вікно в середині екрана, яке говорить: "Відкритий ключ для вставки у відкритий файл дозволених SSH-файлів SSH:".

виділіть весь вміст поля та натисніть клавішу control-c, щоб скопіювати його.

SSH у ваше вікно Linux та вставте його у файл "/home/username/.ssh/authorized_keys". Я вважаю за краще використовувати нано і клацнути правою кнопкою миші, щоб вставити його. Переконайтеся, що він залишається на одній лінії.

Змініть файл / etc / sshd_config за потребою та перезапустіть службу sshd: "service ssh restart"

Якщо вам потрібен зразок файлу sshd_config, дайте мені знати, і я можу розмістити свою.

Я робив це на сервері Ubuntu 8.04, 10.04 та 12.04 LTS, і він працює гладко.


0

Я не впевнений, що цей потік все ще активний, але я натрапив на подібну проблему з ювілейним виданням Windows 10, яке тепер підтримує ядро ​​Ubuntu. Я раніше використовував Putty для підключення до машини Linux. Для генерації id_rsa у форматі Linux використовуйте puttykeygen і завантажте свій приватний ключ putty, потім натисніть на конверсію та виберіть другий варіант.

Штучні конверсії KeyGenerator

відкрийте щойно створений файл ключа та скопіюйте увесь його вміст, переконайтеся, що ваш вміст починається з: ----- ЗАЧАКУЙТЕ КЛАВИУ RSA PRIVATE ----- і закінчуючи ----- ЗАКОННИЙ КРИК ПРАВИ RSA -----

vi id_rsa всередині каталогу ~ / .ssh та вставте скопійований вміст, це потрібно, оскільки Linux в іншому випадку не зрозуміє вміст файлу.

Ось і все, спробуйте ssh на віддалений сервер, він повинен працювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.