Как установить закрытый ключ 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-agent также может использоваться для управления ssh-ключами.


3
Это работает в Ubuntu. Однако не перезаписывайте существующий ключ id_rsa, если он у вас уже есть (скопировав новый ключ поверх него), если только вы не знаете, что не используете старый.
Дэвид Онеил

5
В этом ответе совершенно отсутствует информация, как получить id_rsaфайл (путем преобразования ключа в PuTTYgen)
Мартин Прикрыл,

38

По стечению обстоятельств, я просто должен был сделать это. Вам нужно конвертировать ключи в формат OpenSSH. Команда для этого:

ssh-keygen -i -f puttygen_key > openssh_key

затем вы можете скопировать содержимое openssh_keyin так .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 / authorized_keys *, чтобы вы могли использовать свой секретный ключ Putty, как этот, вместо того, чтобы делать 4 в качестве промежуточного шага:

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

1
о шаге 4: если имя закрытого ключа было mykey-sec.ppk, имя исходного файла в этом случае обычно будет mykey-sec.pub.
Кинджал Диксит

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 .

Вы также можете использовать Linux-версию PuTTYgen для преобразования. Версия для Linux является командной строкой, в отличие от версии для Windows.

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

Смотрите puttygenстраницу руководства Linux .


2

Я нашел еще одно ясное решение.

На puttygenсоздание ключа, затем перейдите к меню - Преобразование и нажмите на экспорт ключа OpenSSH

Содержимое файла начинается и заканчивается

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

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

  • для другого пользователя Скопируйте этот ключевой файл /home/user/.ssh/как id_rsaилиid_dsa

Примечание :

  1. Не нужно редактировать authorized_keys.
  2. Я использую амазонку линукс
  3. Разрешение на файл 0600

1

* * Будьте осторожны и убедитесь, что у вас есть консольный доступ к коробке, потому что, если вы не сделаете это правильно, вы не сможете снова войти в ssh, пока не исправите это с консоли.

Процесс намного проще, чем вы думаете. Снова загрузите пару открытого / закрытого ключа, которую вы сгенерировали в puttygen. В puttygen вы увидите окно в центре экрана, которое гласит: «Открытый ключ для вставки в файл Open SSH authorized_keys:».

выделите все содержимое поля и нажмите control-c, чтобы скопировать его.

SSH в ваш linux-бокс и вставьте его в файл "/home/username/.ssh/authorized_keys". Я предпочитаю использовать nano и просто щелкните правой кнопкой мыши, чтобы вставить его. Убедитесь, что все это стоит на одной строке.

При необходимости измените файл / 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 Conevrsions

откройте вновь созданный ключевой файл и скопируйте все его содержимое, убедитесь, что ваш контент начинается с: ----- BEGIN RSA PRIVATE KEY ----- и заканчивается ----- END RSA PRIVATE KEY -----

vi id_rsa в вашем каталоге ~ / .ssh и вставьте скопированное содержимое, это необходимо, потому что в противном случае linux не поймет содержимое файла.

Вот и все, попробуйте SSH на удаленном сервере, он должен работать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.