Как установить закрытый ключ ssh, сгенерированный puttygen? - proUbuntu
48 голосов
/

Я настроил свой сервер Linux на прием подключений от домашнего компьютера, добавив открытый ключ, сгенерированный puttygen, в файл author_keys.

Теперь я пытаюсь подключиться к той же машине, но на этот раз с другой машины с Ubuntu. Мне нужно использовать один и тот же закрытый ключ (по странной причине, не спрашивайте ...), и я не совсем понимаю, как установить его на свой клиент Ubuntu.

Нужно ли конвертировать его в какой-то другой формат?

Ответы [ 8 ]

37 голосов
/

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

ssh-keygen -i -f puttygen_key > openssh_key

, затем вы можете скопировать содержимое openssh_key в .ssh/authorized_keys, как с помощью обычного ключа SSH.

Опция -i - это та, которая указывает ssh-keygen выполнить преобразование. Опция -f указывает, где найти ключ для преобразования.

Это работает для незашифрованных ключей. Открытый ключ не зашифрован, но частный ключ, вероятно, зашифрован. Я не уверен, есть ли способ расшифровать закрытый ключ, преобразовать его, а затем снова его зашифровать. Вполне возможно, будет проще использовать новые ключи, как предлагает другой ответ (и я бы рекомендовал использовать ssh-agent, хотя это ортогонально текущей проблеме).

28 голосов
/

Эндрю Стейси объяснил , как преобразовать ключи в формат OpenSSH в Linux.

Если вы хотите сделать то же самое в Windows, выполните следующие действия:

  1. Запустите PuTTYGen.
  2. Нажмите «Загрузить».
  3. Выберите свой закрытый ключ и введите кодовую фразу.
  4. В меню «Преобразования» выберите «Экспортировать ключ OpenSSH».
  5. Выберите имя файла назначения.
24 голосов
/

Я не уверен, что ваш закрытый ключ будет работать в Ubuntu, но его стоит попробовать. просто скопируйте ключи в /home/yourName/.ssh/, назовите закрытый ключ как id_rsa, а открытый ключ - id_rsa.pub.

Если это не работает, вы можете создать собственную пару ключей ssh, используя ssh-keygen и скопировать новый открытый ключ на сервер, а ssh следующим образом

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

Я не играл с ним, но я слышал, что ssh-agent также можно использовать для управления ssh-клавишами.

22 голосов
/

Как повторно использовать пары ключей 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
8 голосов
/

PuTTY / PuTTYgen использует свой собственный формат пары ключей. Он не будет работать в Linux, где преобладает формат ключей OpenSSH.

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

  • Вы можете использовать кнопку Сохранить открытый ключ для сохранения открытого ключа в формате .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 создайте ключ, затем перейдите в Главное меню - Конвертация и нажмите Экспорт ключа 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. Я использую Amazon Linux
  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, затем нажмите на преобразование и выберите второй вариант.

Putty KeyGenerator conevrsions

откройте только что сгенерированный ключевой файл и скопируйте все его содержимое, убедитесь, что ваш контент начинается с: ----- BEGIN RSA PRIVATE KEY ----- и заканчивается - --- КОНЕЦ RSA ЧАСТНЫЙ КЛЮЧ -----

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

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

Добро пожаловать на сайт proUbuntu, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...